镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Regen macOS Fleet-maintained app scripts (2/10: bitbox through customshortcuts) - #55300

Merged
allenhouchins merged 1 commit into
mainfrom
fma-2610090403-scripts-02
Oct 10, 2026
Merged

allenhouchins merged 1 commit into
mainfrom
fma-2610090403-scripts-02

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Related issue: Part of #54170

Split from #55214 (part 2 of 10). Regenerates the install scripts for the 93 macOS Fleet-maintained apps from bitbox through customshortcuts (alphabetical by slug) after #55157 changed the shared quit helper to abort the install when the running app won't quit.

Every file in this PR gets the same change: a new install_script_ref and the regenerated script under refs. No versions, installer URLs, or hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order without conflicts.

Split PRs from #55214

These touch disjoint files and can merge in any order.

Checklist for submitter

If some of the following don't apply, delete the relevant line.

  • Input data is properly validated, SELECT * is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters.

Testing

  • QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

AI

AI: Claude Code (claude-fable-5-1)

Copilot AI balanced review requested due to automatic review settings October 10, 2026 01:33
@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/bitbox/darwin.json

=== Install // a83ca705 -> d8f1abf8 ===

--- /tmp/old.NqzGeX	2026-10-10 01:34:23.837014176 +0000
+++ /tmp/new.25m0D9	2026-10-10 01:34:23.837014176 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'ch.shiftcrypto.BitBoxApp'
+quit_and_track_application 'ch.shiftcrypto.BitBoxApp' || exit 1
 if [ -d "$APPDIR/BitBox.app" ]; then
 	sudo mv "$APPDIR/BitBox.app" "$TMPDIR/BitBox.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bitrix24/darwin.json

=== Install // ad807303 -> 4fcc1753 ===

--- /tmp/old.QWtejU	2026-10-10 01:34:23.917013762 +0000
+++ /tmp/new.f3k4Ha	2026-10-10 01:34:23.917013762 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.bitrixsoft.bitrix24desktop'
+quit_and_track_application 'com.bitrixsoft.bitrix24desktop' || exit 1
 if [ -d "$APPDIR/Bitrix24.app" ]; then
 	sudo mv "$APPDIR/Bitrix24.app" "$TMPDIR/Bitrix24.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bitwarden/darwin.json

=== Install // 65c7d7ee -> f66a08fa ===

--- /tmp/old.YSe0aC	2026-10-10 01:34:23.970013489 +0000
+++ /tmp/new.K3blGI	2026-10-10 01:34:23.970013489 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.bitwarden.desktop'
+quit_and_track_application 'com.bitwarden.desktop' || exit 1
 if [ -d "$APPDIR/Bitwarden.app" ]; then
 	sudo mv "$APPDIR/Bitwarden.app" "$TMPDIR/Bitwarden.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bitwig-studio/darwin.json

=== Install // 25e86798 -> 3ea4a741 ===

--- /tmp/old.3VQ0d9	2026-10-10 01:34:24.028013189 +0000
+++ /tmp/new.JkOZba	2026-10-10 01:34:24.029013184 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.bitwig.studio'
+quit_and_track_application 'com.bitwig.studio' || exit 1
 if [ -d "$APPDIR/Bitwig Studio.app" ]; then
 	sudo mv "$APPDIR/Bitwig Studio.app" "$TMPDIR/Bitwig Studio.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/blender/darwin.json

=== Install // 1f7a7a92 -> ed347cb3 ===

--- /tmp/old.WHEOP2	2026-10-10 01:34:24.093012854 +0000
+++ /tmp/new.oL1L44	2026-10-10 01:34:24.093012854 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'org.blenderfoundation.blender'
+quit_and_track_application 'org.blenderfoundation.blender' || exit 1
 if [ -d "$APPDIR/Blender.app" ]; then
 	sudo mv "$APPDIR/Blender.app" "$TMPDIR/Blender.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bleunlock/darwin.json

=== Install // a77c0a44 -> 75400fb8 ===

--- /tmp/old.Z4v78D	2026-10-10 01:34:24.173012440 +0000
+++ /tmp/new.cfgmdO	2026-10-10 01:34:24.173012440 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'jp.sone.BLEUnlock'
+quit_and_track_application 'jp.sone.BLEUnlock' || exit 1
 if [ -d "$APPDIR/BLEUnlock.app" ]; then
 	sudo mv "$APPDIR/BLEUnlock.app" "$TMPDIR/BLEUnlock.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/blip/darwin.json

=== Install // deca07af -> 785b753d ===

--- /tmp/old.aKez61	2026-10-10 01:34:24.224012177 +0000
+++ /tmp/new.1vbEYJ	2026-10-10 01:34:24.225012172 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'net.blip.macos'
+quit_and_track_application 'net.blip.macos' || exit 1
 if [ -d "$APPDIR/Blip.app" ]; then
 	sudo mv "$APPDIR/Blip.app" "$TMPDIR/Blip.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bluej/darwin.json

=== Install // 7f4d8d39 -> b3ab5326 ===

--- /tmp/old.QGMiMr	2026-10-10 01:34:24.298011795 +0000
+++ /tmp/new.GD04M8	2026-10-10 01:34:24.299011790 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'org.bluej.BlueJ'
+quit_and_track_application 'org.bluej.BlueJ' || exit 1
 if [ -d "$APPDIR/BlueJ.app" ]; then
 	sudo mv "$APPDIR/BlueJ.app" "$TMPDIR/BlueJ.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bluewallet/darwin.json

=== Install // c73f23fb -> 48cb54bc ===

--- /tmp/old.BZ0hzc	2026-10-10 01:34:24.341011573 +0000
+++ /tmp/new.LSXZoL	2026-10-10 01:34:24.341011573 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'io.bluewallet.bluewallet'
+quit_and_track_application 'io.bluewallet.bluewallet' || exit 1
 if [ -d "$APPDIR/BlueWallet.app" ]; then
 	sudo mv "$APPDIR/BlueWallet.app" "$TMPDIR/BlueWallet.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/blurscreen/darwin.json

=== Install // de42085e -> 761ca1df ===

--- /tmp/old.UssJcP	2026-10-10 01:34:24.424011144 +0000
+++ /tmp/new.AESmci	2026-10-10 01:34:24.424011144 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -95,6 +95,6 @@
 
 
 # install pkg files
-quit_and_track_application 'com.sanskar.blurscreen'
+quit_and_track_application 'com.sanskar.blurscreen' || exit 1
 sudo installer -pkg "$TMPDIR/BlurScreen-v2.pkg" -target / || exit $?
 relaunch_application 'com.sanskar.blurscreen'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/boltai/darwin.json

=== Install // e49188bd -> 673ff7b7 ===

--- /tmp/old.fSGWdp	2026-10-10 01:34:24.467010922 +0000
+++ /tmp/new.XWrJ82	2026-10-10 01:34:24.467010922 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'co.podzim.boltai-mobile'
+quit_and_track_application 'co.podzim.boltai-mobile' || exit 1
 if [ -d "$APPDIR/BoltAI.app" ]; then
 	sudo mv "$APPDIR/BoltAI.app" "$TMPDIR/BoltAI.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bome-network/darwin.json

=== Install // f614c9b5 -> 56f3c761 ===

--- /tmp/old.UZkjLH	2026-10-10 01:34:24.546010514 +0000
+++ /tmp/new.dAuLoR	2026-10-10 01:34:24.546010514 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.bome.network'
+quit_and_track_application 'com.bome.network' || exit 1
 if [ -d "$APPDIR/Bome Network.app" ]; then
 	sudo mv "$APPDIR/Bome Network.app" "$TMPDIR/Bome Network.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/boom-3d/darwin.json

=== Install // ccc55251 -> da7a3a8b ===

--- /tmp/old.PvG4Lw	2026-10-10 01:34:24.607010199 +0000
+++ /tmp/new.svs0Dz	2026-10-10 01:34:24.607010199 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.globaldelight.Boom3D'
+quit_and_track_application 'com.globaldelight.Boom3D' || exit 1
 if [ -d "$APPDIR/Boom 3D.app" ]; then
 	sudo mv "$APPDIR/Boom 3D.app" "$TMPDIR/Boom 3D.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/boop/darwin.json

=== Install // fbdec4bb -> f08f74ee ===

--- /tmp/old.jy3Jdw	2026-10-10 01:34:24.687009786 +0000
+++ /tmp/new.4BjCTR	2026-10-10 01:34:24.687009786 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.okatbest.boop'
+quit_and_track_application 'com.okatbest.boop' || exit 1
 if [ -d "$APPDIR/Boop.app" ]; then
 	sudo mv "$APPDIR/Boop.app" "$TMPDIR/Boop.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/boost-note/darwin.json

=== Install // 6359466c -> 0e24986e ===

--- /tmp/old.qdLivo	2026-10-10 01:34:24.766009378 +0000
+++ /tmp/new.Ek03mI	2026-10-10 01:34:24.766009378 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.boostio.boostnote'
+quit_and_track_application 'com.boostio.boostnote' || exit 1
 if [ -d "$APPDIR/Boost Note.app" ]; then
 	sudo mv "$APPDIR/Boost Note.app" "$TMPDIR/Boost Note.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/box-drive/darwin.json

=== Install // 257668bf -> a0c9238a ===

--- /tmp/old.2aWzPa	2026-10-10 01:34:24.844008975 +0000
+++ /tmp/new.Y3XQr3	2026-10-10 01:34:24.844008975 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -95,6 +95,6 @@
 
 
 # install pkg files
-quit_and_track_application 'com.box.desktop'
+quit_and_track_application 'com.box.desktop' || exit 1
 sudo installer -pkg "$TMPDIR/BoxDrive-2.54.172.pkg" -target / || exit $?
 relaunch_application 'com.box.desktop'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/brave-browser/darwin.json

=== Install // 32bb30f2 -> 4ae74e60 ===

--- /tmp/old.2OLU0u	2026-10-10 01:34:24.887008753 +0000
+++ /tmp/new.QGFbYJ	2026-10-10 01:34:24.887008753 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.brave.Browser'
+quit_and_track_application 'com.brave.Browser' || exit 1
 if [ -d "$APPDIR/Brave Browser.app" ]; then
 	sudo mv "$APPDIR/Brave Browser.app" "$TMPDIR/Brave Browser.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/breaktimer/darwin.json

=== Install // 2a756740 -> 70d88959 ===

--- /tmp/old.qljg1M	2026-10-10 01:34:24.968008334 +0000
+++ /tmp/new.NJ59bj	2026-10-10 01:34:24.968008334 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.tomjwatson.breaktimer'
+quit_and_track_application 'com.tomjwatson.breaktimer' || exit 1
 if [ -d "$APPDIR/BreakTimer.app" ]; then
 	sudo mv "$APPDIR/BreakTimer.app" "$TMPDIR/BreakTimer.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bruno/darwin.json

=== Install // c3c853d8 -> 74719703 ===

--- /tmp/old.XQEer1	2026-10-10 01:34:25.017008081 +0000
+++ /tmp/new.o4zLMA	2026-10-10 01:34:25.017008081 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.usebruno.app'
+quit_and_track_application 'com.usebruno.app' || exit 1
 if [ -d "$APPDIR/Bruno.app" ]; then
 	sudo mv "$APPDIR/Bruno.app" "$TMPDIR/Bruno.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/bunch/darwin.json

=== Install // ce59ad91 -> 4ec1f518 ===

--- /tmp/old.nQN0Ja	2026-10-10 01:34:25.080007756 +0000
+++ /tmp/new.USlKSU	2026-10-10 01:34:25.080007756 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.brettterpstra.Bunch'
+quit_and_track_application 'com.brettterpstra.Bunch' || exit 1
 if [ -d "$APPDIR/Bunch.app" ]; then
 	sudo mv "$APPDIR/Bunch.app" "$TMPDIR/Bunch.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/burp-suite/darwin.json

=== Install // 1cdedd7f -> b051c8b2 ===

--- /tmp/old.CnSauP	2026-10-10 01:34:25.123007534 +0000
+++ /tmp/new.kYDa4n	2026-10-10 01:34:25.123007534 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.install4j.9806-1938-4586-6531.70'
+quit_and_track_application 'com.install4j.9806-1938-4586-6531.70' || exit 1
 if [ -d "$APPDIR/Burp Suite.app" ]; then
 	sudo mv "$APPDIR/Burp Suite.app" "$TMPDIR/Burp Suite.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/busycontacts/darwin.json

=== Install // b1c9951e -> caabb3ef ===

--- /tmp/old.bvNZyX	2026-10-10 01:34:25.170007291 +0000
+++ /tmp/new.eq8UK5	2026-10-10 01:34:25.170007291 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,6 +97,6 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # install pkg files
-quit_and_track_application 'com.busymac.busycontacts'
+quit_and_track_application 'com.busymac.busycontacts' || exit 1
 sudo installer -pkg "$TMPDIR/BusyContacts Installer.pkg" -target / || exit $?
 relaunch_application 'com.busymac.busycontacts'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/buttercup/darwin.json

=== Install // cdf258e4 -> d7b49efd ===

--- /tmp/old.0kOC34	2026-10-10 01:34:25.250006878 +0000
+++ /tmp/new.KZoNhA	2026-10-10 01:34:25.250006878 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'pw.buttercup.desktop'
+quit_and_track_application 'pw.buttercup.desktop' || exit 1
 if [ -d "$APPDIR/Buttercup.app" ]; then
 	sudo mv "$APPDIR/Buttercup.app" "$TMPDIR/Buttercup.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/buzz/darwin.json

=== Install // 91030d70 -> 7e96c5d1 ===

--- /tmp/old.TshYTz	2026-10-10 01:34:25.330006465 +0000
+++ /tmp/new.jXX5RS	2026-10-10 01:34:25.330006465 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.chidiwilliams.buzz'
+quit_and_track_application 'com.chidiwilliams.buzz' || exit 1
 if [ -d "$APPDIR/Buzz.app" ]; then
 	sudo mv "$APPDIR/Buzz.app" "$TMPDIR/Buzz.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cacher/darwin.json

=== Install // 497bc860 -> 8a1c75a3 ===

--- /tmp/old.86fxl5	2026-10-10 01:34:25.412006041 +0000
+++ /tmp/new.prcEq6	2026-10-10 01:34:25.412006041 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'net.PenguinLabs.Cacher'
+quit_and_track_application 'net.PenguinLabs.Cacher' || exit 1
 if [ -d "$APPDIR/Cacher.app" ]; then
 	sudo mv "$APPDIR/Cacher.app" "$TMPDIR/Cacher.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/caffeine/darwin.json

=== Install // fcb9c909 -> 2283e67e ===

--- /tmp/old.UFA1V0	2026-10-10 01:34:25.492005628 +0000
+++ /tmp/new.nIzQgL	2026-10-10 01:34:25.492005628 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.intelliscapesolutions.caffeine'
+quit_and_track_application 'com.intelliscapesolutions.caffeine' || exit 1
 if [ -d "$APPDIR/Caffeine.app" ]; then
 	sudo mv "$APPDIR/Caffeine.app" "$TMPDIR/Caffeine.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/calibre/darwin.json

=== Install // 099b9491 -> c9b85c74 ===

--- /tmp/old.PHGljK	2026-10-10 01:34:25.553005313 +0000
+++ /tmp/new.uGNgoh	2026-10-10 01:34:25.553005313 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'net.kovidgoyal.calibre'
+quit_and_track_application 'net.kovidgoyal.calibre' || exit 1
 if [ -d "$APPDIR/calibre.app" ]; then
 	sudo mv "$APPDIR/calibre.app" "$TMPDIR/calibre.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/calibrite-profiler/darwin.json

=== Install // c040fef0 -> d42d8165 ===

--- /tmp/old.GePADe	2026-10-10 01:34:25.606005039 +0000
+++ /tmp/new.pa8YrY	2026-10-10 01:34:25.606005039 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.calibrite.profiler'
+quit_and_track_application 'com.calibrite.profiler' || exit 1
 if [ -d "$APPDIR/calibrite PROFILER.app" ]; then
 	sudo mv "$APPDIR/calibrite PROFILER.app" "$TMPDIR/calibrite PROFILER.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/camo-studio/darwin.json

=== Install // f5ecf49a -> 9668a53a ===

--- /tmp/old.MT3EG4	2026-10-10 01:34:25.663004745 +0000
+++ /tmp/new.aZvssZ	2026-10-10 01:34:25.663004745 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.reincubate.macos.cam'
+quit_and_track_application 'com.reincubate.macos.cam' || exit 1
 if [ -d "$APPDIR/Camo Studio.app" ]; then
 	sudo mv "$APPDIR/Camo Studio.app" "$TMPDIR/Camo Studio.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/camtasia/darwin.json

=== Install // d911ee1b -> c874d3bd ===

--- /tmp/old.YZMNcy	2026-10-10 01:34:25.706004523 +0000
+++ /tmp/new.GjptmH	2026-10-10 01:34:25.706004523 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.techsmith.camtasia'
+quit_and_track_application 'com.techsmith.camtasia' || exit 1
 if [ -d "$APPDIR/Camtasia.app" ]; then
 	sudo mv "$APPDIR/Camtasia.app" "$TMPDIR/Camtasia.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/camunda-modeler/darwin.json

=== Install // ae9ea988 -> 49b71184 ===

--- /tmp/old.gefJcB	2026-10-10 01:34:25.748004306 +0000
+++ /tmp/new.Flj06M	2026-10-10 01:34:25.748004306 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.camunda.CamundaModeler'
+quit_and_track_application 'com.camunda.CamundaModeler' || exit 1
 if [ -d "$APPDIR/Camunda Modeler.app" ]; then
 	sudo mv "$APPDIR/Camunda Modeler.app" "$TMPDIR/Camunda Modeler.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/canva/darwin.json

=== Install // c3a04904 -> 767fa37e ===

--- /tmp/old.jLwI7W	2026-10-10 01:34:25.809003991 +0000
+++ /tmp/new.DmsXZc	2026-10-10 01:34:25.809003991 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.canva.CanvaDesktop'
+quit_and_track_application 'com.canva.CanvaDesktop' || exit 1
 if [ -d "$APPDIR/Canva.app" ]; then
 	sudo mv "$APPDIR/Canva.app" "$TMPDIR/Canva.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/capcut/darwin.json

=== Install // 6c43d082 -> 496a4d0b ===

--- /tmp/old.BdWNUd	2026-10-10 01:34:25.865003702 +0000
+++ /tmp/new.UiwemE	2026-10-10 01:34:25.865003702 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.lemon.lvoverseas'
+quit_and_track_application 'com.lemon.lvoverseas' || exit 1
 if [ -d "$APPDIR/CapCut.app" ]; then
 	sudo mv "$APPDIR/CapCut.app" "$TMPDIR/CapCut.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/captain/darwin.json

=== Install // f56af2d9 -> 3bbc3043 ===

--- /tmp/old.Drbxwm	2026-10-10 01:34:25.944003294 +0000
+++ /tmp/new.sRHjf0	2026-10-10 01:34:25.944003294 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.electron.captain'
+quit_and_track_application 'com.electron.captain' || exit 1
 if [ -d "$APPDIR/Captain.app" ]; then
 	sudo mv "$APPDIR/Captain.app" "$TMPDIR/Captain.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/capto/darwin.json

=== Install // 79932e03 -> a37499f9 ===

--- /tmp/old.oag4jb	2026-10-10 01:34:26.024002881 +0000
+++ /tmp/new.hFsnic	2026-10-10 01:34:26.024002881 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.globaldelight.Capto'
+quit_and_track_application 'com.globaldelight.Capto' || exit 1
 if [ -d "$APPDIR/Capto.app" ]; then
 	sudo mv "$APPDIR/Capto.app" "$TMPDIR/Capto.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/carbon-copy-cloner/darwin.json

=== Install // dbe8941c -> d7d461ff ===

--- /tmp/old.gsZ7Lj	2026-10-10 01:34:26.070002643 +0000
+++ /tmp/new.GhQ80q	2026-10-10 01:34:26.070002643 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.bombich.ccc'
+quit_and_track_application 'com.bombich.ccc' || exit 1
 if [ -d "$APPDIR/Carbon Copy Cloner.app" ]; then
 	sudo mv "$APPDIR/Carbon Copy Cloner.app" "$TMPDIR/Carbon Copy Cloner.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cardhop/darwin.json

=== Install // d39decf1 -> 05cb9a03 ===

--- /tmp/old.nNSnFw	2026-10-10 01:34:26.134002313 +0000
+++ /tmp/new.cltXER	2026-10-10 01:34:26.135002307 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.flexibits.cardhop.mac'
+quit_and_track_application 'com.flexibits.cardhop.mac' || exit 1
 if [ -d "$APPDIR/Cardhop.app" ]; then
 	sudo mv "$APPDIR/Cardhop.app" "$TMPDIR/Cardhop.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cavalry/darwin.json

=== Install // 4df28e0c -> 8a24d454 ===

--- /tmp/old.4YK4yi	2026-10-10 01:34:26.183002060 +0000
+++ /tmp/new.ivQQrs	2026-10-10 01:34:26.184002054 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.scenegroup.cavalry'
+quit_and_track_application 'com.scenegroup.cavalry' || exit 1
 if [ -d "$APPDIR/Cavalry.app" ]; then
 	sudo mv "$APPDIR/Cavalry.app" "$TMPDIR/Cavalry.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cellprofiler/darwin.json

=== Install // fcbe7d09 -> e63c5edf ===

--- /tmp/old.4q5njz	2026-10-10 01:34:26.263001646 +0000
+++ /tmp/new.FiiXyH	2026-10-10 01:34:26.263001646 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'org.cellprofiler.CellProfiler'
+quit_and_track_application 'org.cellprofiler.CellProfiler' || exit 1
 if [ -d "$APPDIR/CellProfiler.app" ]; then
 	sudo mv "$APPDIR/CellProfiler.app" "$TMPDIR/CellProfiler.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chalk/darwin.json

=== Install // 6cef1855 -> a90689c2 ===

--- /tmp/old.L3ding	2026-10-10 01:34:26.343001233 +0000
+++ /tmp/new.tR6B0q	2026-10-10 01:34:26.343001233 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'fr.chachatelier.pierre.Chalk'
+quit_and_track_application 'fr.chachatelier.pierre.Chalk' || exit 1
 if [ -d "$APPDIR/Chalk.app" ]; then
 	sudo mv "$APPDIR/Chalk.app" "$TMPDIR/Chalk.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/charles/darwin.json

=== Install // 46e04af6 -> 8a360a4d ===

--- /tmp/old.LM1dbk	2026-10-10 01:34:26.431000779 +0000
+++ /tmp/new.otcdNR	2026-10-10 01:34:26.431000779 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.xk72.Charles'
+quit_and_track_application 'com.xk72.Charles' || exit 1
 if [ -d "$APPDIR/Charles.app" ]; then
 	sudo mv "$APPDIR/Charles.app" "$TMPDIR/Charles.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/charmstone/darwin.json

=== Install // c5030ea6 -> 7de67d4c ===

--- /tmp/old.ZeurDU	2026-10-10 01:34:26.511000365 +0000
+++ /tmp/new.dfw2Gb	2026-10-10 01:34:26.511000365 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.knollsoft.CharmstonePro'
+quit_and_track_application 'com.knollsoft.CharmstonePro' || exit 1
 if [ -d "$APPDIR/Charmstone.app" ]; then
 	sudo mv "$APPDIR/Charmstone.app" "$TMPDIR/Charmstone.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chatgpt-atlas/darwin.json

=== Install // 06c0f194 -> 9ce56bee ===

--- /tmp/old.EByyAE	2026-10-10 01:34:26.591999947 +0000
+++ /tmp/new.PeLIOU	2026-10-10 01:34:26.591999947 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.openai.atlas'
+quit_and_track_application 'com.openai.atlas' || exit 1
 if [ -d "$APPDIR/ChatGPT Atlas.app" ]; then
 	sudo mv "$APPDIR/ChatGPT Atlas.app" "$TMPDIR/ChatGPT Atlas.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chatgpt/darwin.json

=== Install // cbce2d7d -> 39ef80f1 ===

--- /tmp/old.cqyqlH	2026-10-10 01:34:26.631999741 +0000
+++ /tmp/new.eOnYae	2026-10-10 01:34:26.631999741 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.openai.chat'
+quit_and_track_application 'com.openai.chat' || exit 1
 if [ -d "$APPDIR/ChatGPT.app" ]; then
 	sudo mv "$APPDIR/ChatGPT.app" "$TMPDIR/ChatGPT.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chatwise/darwin.json

=== Install // 292ab15f -> 9a884519 ===

--- /tmp/old.S67S6D	2026-10-10 01:34:26.688999446 +0000
+++ /tmp/new.lCqHGU	2026-10-10 01:34:26.688999446 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'app.chatwise'
+quit_and_track_application 'app.chatwise' || exit 1
 if [ -d "$APPDIR/ChatWise.app" ]; then
 	sudo mv "$APPDIR/ChatWise.app" "$TMPDIR/ChatWise.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cheetah3d/darwin.json

=== Install // af66cef7 -> 7f7376eb ===

--- /tmp/old.4fSrLK	2026-10-10 01:34:26.768999033 +0000
+++ /tmp/new.M3mXf2	2026-10-10 01:34:26.768999033 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'de.wengenmayer.Cheetah3D'
+quit_and_track_application 'de.wengenmayer.Cheetah3D' || exit 1
 if [ -d "$APPDIR/Cheetah3D.app" ]; then
 	sudo mv "$APPDIR/Cheetah3D.app" "$TMPDIR/Cheetah3D.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cherry-studio/darwin.json

=== Install // 31529318 -> 0ccdc59f ===

--- /tmp/old.6dck2j	2026-10-10 01:34:26.817998780 +0000
+++ /tmp/new.h8raj2	2026-10-10 01:34:26.817998780 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.kangfenmao.CherryStudio'
+quit_and_track_application 'com.kangfenmao.CherryStudio' || exit 1
 if [ -d "$APPDIR/Cherry Studio.app" ]; then
 	sudo mv "$APPDIR/Cherry Studio.app" "$TMPDIR/Cherry Studio.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chime/darwin.json

=== Install // d5e99811 -> aaa621e9 ===

--- /tmp/old.v5gNhC	2026-10-10 01:34:26.897998367 +0000
+++ /tmp/new.GPOHmS	2026-10-10 01:34:26.898998362 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.chimehq.Edit'
+quit_and_track_application 'com.chimehq.Edit' || exit 1
 if [ -d "$APPDIR/Chime.app" ]; then
 	sudo mv "$APPDIR/Chime.app" "$TMPDIR/Chime.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/choosy/darwin.json

=== Install // c9041670 -> b9cb23e4 ===

--- /tmp/old.WDJcam	2026-10-10 01:34:26.980997938 +0000
+++ /tmp/new.T4WtZk	2026-10-10 01:34:26.980997938 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,6 +97,6 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # install pkg files
-quit_and_track_application 'com.choosyosx.Choosy'
+quit_and_track_application 'com.choosyosx.Choosy' || exit 1
 sudo installer -pkg "$TMPDIR/Choosy.pkg" -target / || exit $?
 relaunch_application 'com.choosyosx.Choosy'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chrome-remote-desktop-host/darwin.json

=== Install // ad88097b -> 61467720 ===

--- /tmp/old.n33UEa	2026-10-10 01:34:27.043997613 +0000
+++ /tmp/new.prvpw5	2026-10-10 01:34:27.043997613 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,6 +100,6 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # install pkg files
-quit_and_track_application 'com.google.chromeremotedesktop.me2me-host-uninstaller'
+quit_and_track_application 'com.google.chromeremotedesktop.me2me-host-uninstaller' || exit 1
 sudo installer -pkg "$TMPDIR/Chrome Remote Desktop Host.pkg" -target / || exit $?
 relaunch_application 'com.google.chromeremotedesktop.me2me-host-uninstaller'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/citrix-workspace/darwin.json

=== Install // ed484468 -> 51a4918c ===

--- /tmp/old.PXa83c	2026-10-10 01:34:27.110997267 +0000
+++ /tmp/new.jHFxsL	2026-10-10 01:34:27.110997267 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -95,6 +95,6 @@
 
 
 # install pkg files
-quit_and_track_application 'com.citrix.receiver.nomas'
+quit_and_track_application 'com.citrix.receiver.nomas' || exit 1
 sudo installer -pkg "$TMPDIR/CitrixWorkspaceAppUniversal26.09.0.17.pkg" -target / || exit $?
 relaunch_application 'com.citrix.receiver.nomas'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/claude-devtools/darwin.json

=== Install // 17c5d96b -> f6c1bb32 ===

--- /tmp/old.xWlcZM	2026-10-10 01:34:27.190996854 +0000
+++ /tmp/new.7iRntu	2026-10-10 01:34:27.190996854 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.claudecode.context'
+quit_and_track_application 'com.claudecode.context' || exit 1
 if [ -d "$APPDIR/claude-devtools.app" ]; then
 	sudo mv "$APPDIR/claude-devtools.app" "$TMPDIR/claude-devtools.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/claude/darwin.json

=== Install // 57886481 -> 852382a4 ===

--- /tmp/old.L4I71g	2026-10-10 01:34:27.230996647 +0000
+++ /tmp/new.zvCBuv	2026-10-10 01:34:27.231996642 +0000
@@ -38,21 +38,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -102,7 +102,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.anthropic.claudefordesktop'
+quit_and_track_application 'com.anthropic.claudefordesktop' || exit 1
 if [ -d "$APPDIR/Claude.app" ]; then
 	sudo mv "$APPDIR/Claude.app" "$TMPDIR/Claude.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cleanclip/darwin.json

=== Install // 1ce89d8e -> e61ba427 ===

--- /tmp/old.K0vM6H	2026-10-10 01:34:27.310996234 +0000
+++ /tmp/new.ODSQX9	2026-10-10 01:34:27.310996234 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.antiless.cleanclip.mac'
+quit_and_track_application 'com.antiless.cleanclip.mac' || exit 1
 if [ -d "$APPDIR/CleanClip.app" ]; then
 	sudo mv "$APPDIR/CleanClip.app" "$TMPDIR/CleanClip.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cleanmymac/darwin.json

=== Install // 1f8e229d -> 625f9f0a ===

--- /tmp/old.rzwSXP	2026-10-10 01:34:27.359995981 +0000
+++ /tmp/new.mG1n9C	2026-10-10 01:34:27.359995981 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.macpaw.CleanMyMac5'
+quit_and_track_application 'com.macpaw.CleanMyMac5' || exit 1
 if [ -d "$APPDIR/CleanMyMac_5.app" ]; then
 	sudo mv "$APPDIR/CleanMyMac_5.app" "$TMPDIR/CleanMyMac_5.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cleanshot/darwin.json

=== Install // 3ed068fa -> 1dec77a3 ===

--- /tmp/old.MAw4Yc	2026-10-10 01:34:27.419995671 +0000
+++ /tmp/new.UeojCj	2026-10-10 01:34:27.420995666 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.getcleanshot.app'
+quit_and_track_application 'com.getcleanshot.app' || exit 1
 if [ -d "$APPDIR/CleanShot X.app" ]; then
 	sudo mv "$APPDIR/CleanShot X.app" "$TMPDIR/CleanShot X.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clickshare/darwin.json

=== Install // 2723b00c -> 8c37eb9b ===

--- /tmp/old.00ftcZ	2026-10-10 01:34:27.492995294 +0000
+++ /tmp/new.kzaVKh	2026-10-10 01:34:27.492995294 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.barco.clickshare.updater'
+quit_and_track_application 'com.barco.clickshare.updater' || exit 1
 if [ -d "$APPDIR/ClickShare.app" ]; then
 	sudo mv "$APPDIR/ClickShare.app" "$TMPDIR/ClickShare.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clickup/darwin.json

=== Install // 4b26d157 -> e7ec8599 ===

--- /tmp/old.j6YAIf	2026-10-10 01:34:27.551994989 +0000
+++ /tmp/new.YRSMS2	2026-10-10 01:34:27.551994989 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.clickup.desktop-app'
+quit_and_track_application 'com.clickup.desktop-app' || exit 1
 if [ -d "$APPDIR/ClickUp.app" ]; then
 	sudo mv "$APPDIR/ClickUp.app" "$TMPDIR/ClickUp.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clion/darwin.json

=== Install // 402571cd -> 72311d2f ===

--- /tmp/old.7xuEkU	2026-10-10 01:34:27.602994726 +0000
+++ /tmp/new.B8s64K	2026-10-10 01:34:27.602994726 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.jetbrains.CLion'
+quit_and_track_application 'com.jetbrains.CLion' || exit 1
 if [ -d "$APPDIR/CLion.app" ]; then
 	sudo mv "$APPDIR/CLion.app" "$TMPDIR/CLion.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clipbook/darwin.json

=== Install // d0558c9f -> c73f6f42 ===

--- /tmp/old.XRA0a6	2026-10-10 01:34:27.641994524 +0000
+++ /tmp/new.qMbSsx	2026-10-10 01:34:27.641994524 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.ikryanov.clipbook'
+quit_and_track_application 'com.ikryanov.clipbook' || exit 1
 if [ -d "$APPDIR/ClipBook.app" ]; then
 	sudo mv "$APPDIR/ClipBook.app" "$TMPDIR/ClipBook.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clipgrab/darwin.json

=== Install // 6b25e137 -> 2ae73cc5 ===

--- /tmp/old.85L4Sk	2026-10-10 01:34:27.720994116 +0000
+++ /tmp/new.7sapgR	2026-10-10 01:34:27.720994116 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'de.clipgrab.ClipGrab'
+quit_and_track_application 'de.clipgrab.ClipGrab' || exit 1
 if [ -d "$APPDIR/ClipGrab.app" ]; then
 	sudo mv "$APPDIR/ClipGrab.app" "$TMPDIR/ClipGrab.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clipy/darwin.json

=== Install // 4444dc21 -> 5e4840e7 ===

--- /tmp/old.vhcuJD	2026-10-10 01:34:27.800993703 +0000
+++ /tmp/new.ti4Gp4	2026-10-10 01:34:27.800993703 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.clipy-app.Clipy'
+quit_and_track_application 'com.clipy-app.Clipy' || exit 1
 if [ -d "$APPDIR/Clipy.app" ]; then
 	sudo mv "$APPDIR/Clipy.app" "$TMPDIR/Clipy.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clocker/darwin.json

=== Install // 84600ba5 -> 3b2c70e8 ===

--- /tmp/old.6M5CtB	2026-10-10 01:34:27.881993273 +0000
+++ /tmp/new.b0iHt1	2026-10-10 01:34:27.881993273 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.abhishek.Clocker'
+quit_and_track_application 'com.abhishek.Clocker' || exit 1
 if [ -d "$APPDIR/Clocker.app" ]; then
 	sudo mv "$APPDIR/Clocker.app" "$TMPDIR/Clocker.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clockify/darwin.json

=== Install // a2dfc022 -> dbf9fb32 ===

--- /tmp/old.wBbkSS	2026-10-10 01:34:27.924993042 +0000
+++ /tmp/new.RVut9c	2026-10-10 01:34:27.925993036 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'coing.ClockifyDesktop'
+quit_and_track_application 'coing.ClockifyDesktop' || exit 1
 if [ -d "$APPDIR/Clockify Desktop.app" ]; then
 	sudo mv "$APPDIR/Clockify Desktop.app" "$TMPDIR/Clockify Desktop.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clop/darwin.json

=== Install // ba744c65 -> 0eae6654 ===

--- /tmp/old.DEzA6K	2026-10-10 01:34:27.968992805 +0000
+++ /tmp/new.sGw8YZ	2026-10-10 01:34:27.968992805 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.lowtechguys.Clop'
+quit_and_track_application 'com.lowtechguys.Clop' || exit 1
 if [ -d "$APPDIR/Clop.app" ]; then
 	sudo mv "$APPDIR/Clop.app" "$TMPDIR/Clop.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cloudflare-warp/darwin.json

=== Install // 546f5fd1 -> 9e1024b1 ===

--- /tmp/old.QzBJyg	2026-10-10 01:34:28.012992569 +0000
+++ /tmp/new.ZIAJnO	2026-10-10 01:34:28.012992569 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -95,6 +95,6 @@
 
 
 # install pkg files
-quit_and_track_application 'com.cloudflare.1dot1dot1dot1.macos'
+quit_and_track_application 'com.cloudflare.1dot1dot1dot1.macos' || exit 1
 sudo installer -pkg "$TMPDIR/Cloudflare_WARP_2026.8.2100.0.pkg" -target / || exit $?
 relaunch_application 'com.cloudflare.1dot1dot1dot1.macos'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cloudmounter/darwin.json

=== Install // 13706449 -> 4cd1a546 ===

--- /tmp/old.TwJpDR	2026-10-10 01:34:28.092992139 +0000
+++ /tmp/new.6nnUsK	2026-10-10 01:34:28.092992139 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.eltima.cloudmounter'
+quit_and_track_application 'com.eltima.cloudmounter' || exit 1
 if [ -d "$APPDIR/CloudMounter.app" ]; then
 	sudo mv "$APPDIR/CloudMounter.app" "$TMPDIR/CloudMounter.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cmake-app/darwin.json

=== Install // bf131a87 -> cc0913c1 ===

--- /tmp/old.yWM4n0	2026-10-10 01:34:28.139991887 +0000
+++ /tmp/new.VqpzrJ	2026-10-10 01:34:28.140991881 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'org.cmake.cmake'
+quit_and_track_application 'org.cmake.cmake' || exit 1
 if [ -d "$APPDIR/CMake.app" ]; then
 	sudo mv "$APPDIR/CMake.app" "$TMPDIR/CMake.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cmux/darwin.json

=== Install // 622f9d4c -> 12f35310 ===

--- /tmp/old.NATG1n	2026-10-10 01:34:28.184991645 +0000
+++ /tmp/new.TbDWKd	2026-10-10 01:34:28.185991640 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.cmuxterm.app'
+quit_and_track_application 'com.cmuxterm.app' || exit 1
 if [ -d "$APPDIR/cmux.app" ]; then
 	sudo mv "$APPDIR/cmux.app" "$TMPDIR/cmux.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/coconutbattery/darwin.json

=== Install // f4ca6863 -> c2a080a7 ===

--- /tmp/old.ainfRZ	2026-10-10 01:34:28.254991269 +0000
+++ /tmp/new.V1ge7C	2026-10-10 01:34:28.255991264 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.coconut-flavour.coconutBattery-Menu'
+quit_and_track_application 'com.coconut-flavour.coconutBattery-Menu' || exit 1
 if [ -d "$APPDIR/coconutBattery.app" ]; then
 	sudo mv "$APPDIR/coconutBattery.app" "$TMPDIR/coconutBattery.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/codeedit/darwin.json

=== Install // 18ba7382 -> 4d992fef ===

--- /tmp/old.HFhw0x	2026-10-10 01:34:28.335990834 +0000
+++ /tmp/new.uV5fgl	2026-10-10 01:34:28.335990834 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'app.codeedit.CodeEdit'
+quit_and_track_application 'app.codeedit.CodeEdit' || exit 1
 if [ -d "$APPDIR/CodeEdit.app" ]; then
 	sudo mv "$APPDIR/CodeEdit.app" "$TMPDIR/CodeEdit.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/coderunner/darwin.json

=== Install // 9708d7e3 -> 7aee2c06 ===

--- /tmp/old.N3Vyhc	2026-10-10 01:34:28.415990404 +0000
+++ /tmp/new.VHLwh3	2026-10-10 01:34:28.415990404 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.krill.CodeRunner'
+quit_and_track_application 'com.krill.CodeRunner' || exit 1
 if [ -d "$APPDIR/CodeRunner.app" ]; then
 	sudo mv "$APPDIR/CodeRunner.app" "$TMPDIR/CodeRunner.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/codex-app/darwin.json

=== Install // 8fdf3a72 -> 2ff7bf26 ===

--- /tmp/old.jfgLUA	2026-10-10 01:34:28.497989964 +0000
+++ /tmp/new.dc4Ke1	2026-10-10 01:34:28.497989964 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.openai.codex'
+quit_and_track_application 'com.openai.codex' || exit 1
 if [ -d "$APPDIR/Codex.app" ]; then
 	sudo mv "$APPDIR/Codex.app" "$TMPDIR/Codex.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/codexbar/darwin.json

=== Install // 6993c93e -> c24954fb ===

--- /tmp/old.SRCxfv	2026-10-10 01:34:28.540989733 +0000
+++ /tmp/new.GT8gGh	2026-10-10 01:34:28.541989727 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.steipete.codexbar'
+quit_and_track_application 'com.steipete.codexbar' || exit 1
 if [ -d "$APPDIR/CodexBar.app" ]; then
 	sudo mv "$APPDIR/CodexBar.app" "$TMPDIR/CodexBar.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cog-app/darwin.json

=== Install // ab9757fd -> 04fcc84f ===

--- /tmp/old.hPGMkX	2026-10-10 01:34:28.584989497 +0000
+++ /tmp/new.nd9Ssf	2026-10-10 01:34:28.584989497 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'org.cogx.cog'
+quit_and_track_application 'org.cogx.cog' || exit 1
 if [ -d "$APPDIR/Cog.app" ]; then
 	sudo mv "$APPDIR/Cog.app" "$TMPDIR/Cog.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/colorsnapper/darwin.json

=== Install // c684fe06 -> f20f352a ===

--- /tmp/old.EqEm2q	2026-10-10 01:34:28.665989062 +0000
+++ /tmp/new.T9Xs1v	2026-10-10 01:34:28.666989056 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.koolesache.ColorSnapper2'
+quit_and_track_application 'com.koolesache.ColorSnapper2' || exit 1
 if [ -d "$APPDIR/ColorSnapper2.app" ]; then
 	sudo mv "$APPDIR/ColorSnapper2.app" "$TMPDIR/ColorSnapper2.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/colour-contrast-analyser/darwin.json

=== Install // 1e8f2d84 -> 260f0704 ===

--- /tmp/old.oGEnjy	2026-10-10 01:34:28.746988626 +0000
+++ /tmp/new.TQQ2il	2026-10-10 01:34:28.746988626 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.electron.cca'
+quit_and_track_application 'com.electron.cca' || exit 1
 if [ -d "$APPDIR/Colour Contrast Analyser.app" ]; then
 	sudo mv "$APPDIR/Colour Contrast Analyser.app" "$TMPDIR/Colour Contrast Analyser.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/command-tab-plus/darwin.json

=== Install // 73a2b9b5 -> 8fcbd3b7 ===

--- /tmp/old.9a8VOL	2026-10-10 01:34:28.788988401 +0000
+++ /tmp/new.ZK0hyU	2026-10-10 01:34:28.789988395 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.sergey-gerasimenko.Command-Tab-Plus-2'
+quit_and_track_application 'com.sergey-gerasimenko.Command-Tab-Plus-2' || exit 1
 if [ -d "$APPDIR/Command-Tab Plus 2.app" ]; then
 	sudo mv "$APPDIR/Command-Tab Plus 2.app" "$TMPDIR/Command-Tab Plus 2.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/commander-one/darwin.json

=== Install // 03a9c095 -> bc034f5e ===

--- /tmp/old.3B2sLi	2026-10-10 01:34:28.844988100 +0000
+++ /tmp/new.rajhxV	2026-10-10 01:34:28.844988100 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.eltima.cmd1'
+quit_and_track_application 'com.eltima.cmd1' || exit 1
 if [ -d "$APPDIR/Commander One.app" ]; then
 	sudo mv "$APPDIR/Commander One.app" "$TMPDIR/Commander One.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/commander/darwin.json

=== Install // a8d2b53c -> 40628b29 ===

--- /tmp/old.8ExEWl	2026-10-10 01:34:28.884987885 +0000
+++ /tmp/new.cDDPf9	2026-10-10 01:34:28.884987885 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.krzyzanowskim.Commander'
+quit_and_track_application 'com.krzyzanowskim.Commander' || exit 1
 if [ -d "$APPDIR/Commander.app" ]; then
 	sudo mv "$APPDIR/Commander.app" "$TMPDIR/Commander.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/companion/darwin.json

=== Install // f4b5e238 -> b4d30ed2 ===

--- /tmp/old.Iouzs0	2026-10-10 01:34:28.931987633 +0000
+++ /tmp/new.0owtwV	2026-10-10 01:34:28.931987633 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'companion.bitfocus.no'
+quit_and_track_application 'companion.bitfocus.no' || exit 1
 if [ -d "$APPDIR/Companion.app" ]; then
 	sudo mv "$APPDIR/Companion.app" "$TMPDIR/Companion.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/connect-fonts/darwin.json

=== Install // 79f2982d -> b3e83ce6 ===

--- /tmp/old.Smfaip	2026-10-10 01:34:28.980987370 +0000
+++ /tmp/new.xmSdt1	2026-10-10 01:34:28.980987370 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.extensis.SuitcaseFusion'
+quit_and_track_application 'com.extensis.SuitcaseFusion' || exit 1
 if [ -d "$APPDIR/Connect Fonts.app" ]; then
 	sudo mv "$APPDIR/Connect Fonts.app" "$TMPDIR/Connect Fonts.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/copilot-money/darwin.json

=== Install // 02b7fbf3 -> d95ade6d ===

--- /tmp/old.AI9HiV	2026-10-10 01:34:29.038987058 +0000
+++ /tmp/new.E6J5qx	2026-10-10 01:34:29.038987058 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.copilot.production'
+quit_and_track_application 'com.copilot.production' || exit 1
 if [ -d "$APPDIR/Copilot.app" ]; then
 	sudo mv "$APPDIR/Copilot.app" "$TMPDIR/Copilot.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cork/darwin.json

=== Install // fc75a6be -> 2480510b ===

--- /tmp/old.sbv1vt	2026-10-10 01:34:29.104986704 +0000
+++ /tmp/new.LndS7W	2026-10-10 01:34:29.104986704 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.davidbures.cork'
+quit_and_track_application 'com.davidbures.cork' || exit 1
 if [ -d "$APPDIR/Cork.app" ]; then
 	sudo mv "$APPDIR/Cork.app" "$TMPDIR/Cork.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/coteditor/darwin.json

=== Install // d7df556c -> bdc7b771 ===

--- /tmp/old.OxPBtN	2026-10-10 01:34:29.152986446 +0000
+++ /tmp/new.p3Or7k	2026-10-10 01:34:29.152986446 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.coteditor.CotEditor'
+quit_and_track_application 'com.coteditor.CotEditor' || exit 1
 if [ -d "$APPDIR/CotEditor.app" ]; then
 	sudo mv "$APPDIR/CotEditor.app" "$TMPDIR/CotEditor.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/crashplan/darwin.json

=== Install // a76a6ada -> 27a31311 ===

--- /tmp/old.2t1P6B	2026-10-10 01:34:29.234986005 +0000
+++ /tmp/new.tC4mvb	2026-10-10 01:34:29.235986000 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,6 +100,6 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # install pkg files
-quit_and_track_application 'com.crashplan.desktop'
+quit_and_track_application 'com.crashplan.desktop' || exit 1
 sudo installer -pkg "$TMPDIR/Install CrashPlan.pkg" -target / || exit $?
 relaunch_application 'com.crashplan.desktop'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/crossover/darwin.json

=== Install // 5a28ed0c -> 955ba1cc ===

--- /tmp/old.K7AwZ0	2026-10-10 01:34:29.315985570 +0000
+++ /tmp/new.llGGrE	2026-10-10 01:34:29.315985570 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.codeweavers.CrossOver'
+quit_and_track_application 'com.codeweavers.CrossOver' || exit 1
 if [ -d "$APPDIR/CrossOver.app" ]; then
 	sudo mv "$APPDIR/CrossOver.app" "$TMPDIR/CrossOver.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cryptomator/darwin.json

=== Install // 54b3ef0f -> e7ecd1d0 ===

--- /tmp/old.lKs09p	2026-10-10 01:34:29.395985141 +0000
+++ /tmp/new.VqjTXp	2026-10-10 01:34:29.395985141 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'org.cryptomator'
+quit_and_track_application 'org.cryptomator' || exit 1
 if [ -d "$APPDIR/Cryptomator.app" ]; then
 	sudo mv "$APPDIR/Cryptomator.app" "$TMPDIR/Cryptomator.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/crystalfetch/darwin.json

=== Install // 2528c76a -> 167a371c ===

--- /tmp/old.knAdBB	2026-10-10 01:34:29.475984711 +0000
+++ /tmp/new.HCdBhP	2026-10-10 01:34:29.475984711 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'llc.turing.CrystalFetch'
+quit_and_track_application 'llc.turing.CrystalFetch' || exit 1
 if [ -d "$APPDIR/CrystalFetch.app" ]; then
 	sudo mv "$APPDIR/CrystalFetch.app" "$TMPDIR/CrystalFetch.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cursor/darwin.json

=== Install // 1ae48b55 -> dc8bfa92 ===

--- /tmp/old.l3rGGK	2026-10-10 01:34:29.514984501 +0000
+++ /tmp/new.LUCJGr	2026-10-10 01:34:29.514984501 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.todesktop.230313mzl4w4u92'
+quit_and_track_application 'com.todesktop.230313mzl4w4u92' || exit 1
 if [ -d "$APPDIR/Cursor.app" ]; then
 	sudo mv "$APPDIR/Cursor.app" "$TMPDIR/Cursor.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cursorsense/darwin.json

=== Install // a2399515 -> 9ffef571 ===

--- /tmp/old.jjXfQO	2026-10-10 01:34:29.579984152 +0000
+++ /tmp/new.3PxAse	2026-10-10 01:34:29.579984152 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'jp.plentycom.CursorSense.app'
+quit_and_track_application 'jp.plentycom.CursorSense.app' || exit 1
 if [ -d "$APPDIR/CursorSense.app" ]; then
 	sudo mv "$APPDIR/CursorSense.app" "$TMPDIR/CursorSense.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/cursr/darwin.json

=== Install // fdee1fdd -> c396feb4 ===

--- /tmp/old.6F1jJw	2026-10-10 01:34:29.634983857 +0000
+++ /tmp/new.ZUscmt	2026-10-10 01:34:29.634983857 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -100,7 +100,7 @@
 sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
 hdiutil detach "$MOUNT_POINT" || true
 # copy to the applications folder
-quit_and_track_application 'com.bitgapp.cursr'
+quit_and_track_application 'com.bitgapp.cursr' || exit 1
 if [ -d "$APPDIR/Cursr.app" ]; then
 	sudo mv "$APPDIR/Cursr.app" "$TMPDIR/Cursr.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/customshortcuts/darwin.json

=== Install // c3b15a20 -> 401f2f27 ===

--- /tmp/old.EC3f2m	2026-10-10 01:34:29.714983427 +0000
+++ /tmp/new.pFxGVs	2026-10-10 01:34:29.714983427 +0000
@@ -33,21 +33,21 @@
   echo "Quitting application '$bundle_id'..."
 
   # try to quit the application within the timeout period
-  local quit_success=false
+  local quit_success=false still_running
   SECONDS=0
   while (( SECONDS < timeout_duration )); do
-    if osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1; then
-      if ! pgrep -f "$bundle_id" >/dev/null 2>&1; then
-        echo "Application '$bundle_id' quit successfully."
-        quit_success=true
-        break
-      fi
-    fi
+    osascript -e "tell application id \"$bundle_id\" to quit" >/dev/null 2>&1
     sleep 1
+    if still_running=$(osascript -e "application id \"$bundle_id\" is running" 2>/dev/null) && [[ "$still_running" == "false" ]]; then
+      echo "Application '$bundle_id' quit successfully."
+      quit_success=true
+      break
+    fi
   done
 
   if [[ "$quit_success" = false ]]; then
     echo "Application '$bundle_id' did not quit."
+    return 1
   fi
 }
 
@@ -97,7 +97,7 @@
 # extract contents
 unzip "$INSTALLER_PATH" -d "$TMPDIR"
 # copy to the applications folder
-quit_and_track_application 'com.houdah.CustomShortcuts'
+quit_and_track_application 'com.houdah.CustomShortcuts' || exit 1
 if [ -d "$APPDIR/CustomShortcuts.app" ]; then
 	sudo mv "$APPDIR/CustomShortcuts.app" "$TMPDIR/CustomShortcuts.app.bkp" || exit $?
 fi

=== Uninstall Script (no changes) ===

allenhouchins added a commit that referenced this pull request Oct 10, 2026
…scuit) (#55299)

**Related issue:** Part of #54170

Split from #55214 (part 1 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `010-editor` through `biscuit`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)

Copilot AI 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.

🟢 Approval recommended

The regenerated scripts consistently implement the intended failure behavior, and all 25 script references match their content hashes.

0 open findings

What changed in this PR

Regenerates 25 macOS Fleet-maintained app manifests so installation stops when a running app cannot quit.

Changes:

  • Polls macOS application state instead of using pgrep.
  • Exits before replacement when quitting fails.
  • Updates install-script references to match regenerated scripts.
File Description
outputs/​bitbox/​darwin.json Regenerates BitBox install script.
outputs/​bitwig-studio/​darwin.json Regenerates Bitwig Studio install script.
outputs/​bleunlock/​darwin.json Regenerates BLEUnlock install script.
outputs/​blip/​darwin.json Regenerates Blip install script.
outputs/​boltai/​darwin.json Regenerates BoltAI install script.
outputs/​boop/​darwin.json Regenerates Boop install script.
outputs/​bruno/​darwin.json Regenerates Bruno install script.
outputs/​buttercup/​darwin.json Regenerates Buttercup install script.
outputs/​buzz/​darwin.json Regenerates Buzz install script.
outputs/​cavalry/​darwin.json Regenerates Cavalry install script.
outputs/​cellprofiler/​darwin.json Regenerates CellProfiler install script.
outputs/​chalk/​darwin.json Regenerates Chalk install script.
outputs/​claude-devtools/​darwin.json Regenerates Claude DevTools install script.
outputs/​cleanclip/​darwin.json Regenerates CleanClip install script.
outputs/​clipbook/​darwin.json Regenerates ClipBook install script.
outputs/​clipgrab/​darwin.json Regenerates ClipGrab install script.
outputs/​clockify/​darwin.json Regenerates Clockify install script.
outputs/​cmake-app/​darwin.json Regenerates CMake install script.
outputs/​coderunner/​darwin.json Regenerates CodeRunner install script.
outputs/​colour-contrast-analyser/​darwin.json Regenerates CCA install script.
outputs/​command-tab-plus/​darwin.json Regenerates Command-Tab Plus install script.
outputs/​commander/​darwin.json Regenerates Commander install script.
outputs/​copilot-money/​darwin.json Regenerates Copilot Money install script.
outputs/​crossover/​darwin.json Regenerates CrossOver install script.
outputs/​crystalfetch/​darwin.json Regenerates CrystalFetch install script.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@allenhouchins
allenhouchins merged commit 71a9f29 into main Oct 10, 2026
19 of 20 checks passed
@allenhouchins
allenhouchins deleted the fma-2610090403-scripts-02 branch October 10, 2026 01:36
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…low) (#55301)

**Related issue:** Part of #54170

Split from #55214 (part 3 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `cyberduck` through `fellow`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* macOS app installers now verify that an app has fully quit before
replacing it. If it remains open after repeated attempts, installation
stops rather than continuing, helping prevent incomplete or failed
updates.
* Installers that relaunch apps after a successful update continue to do
so; existing recovery behavior for failed app copies is preserved.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…ape) (#55302)

**Related issue:** Part of #54170

Split from #55214 (part 4 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `ferdium` through `inkscape`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* macOS installations across the updated apps now stop if the app cannot
be closed within 10 seconds, rather than continuing to replace an app
that may still be running. This helps prevent incomplete or disrupted
updates.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…ugh mattermost) (#55303)

**Related issue:** Part of #54170

Split from #55214 (part 5 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `input-source-pro` through
`mattermost` (alphabetical by slug) after #55157 changed the shared quit
helper to abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* macOS app installers now verify that an app has fully quit before
replacing it. If it remains open after 10 seconds, installation stops
instead of proceeding, helping prevent failed or incomplete updates.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…nifocus) (#55304)

**Related issue:** Part of #54170

Split from #55214 (part 6 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `meetingbar` through `omnifocus`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* macOS app installations now verify that a running app has quit before
proceeding. If it remains open after the wait, installation stops rather
than continuing with the app replacement.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…uip) (#55305)

**Related issue:** Part of #54170

Split from #55214 (part 7 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `omnigraffle` through `quip`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…55306)

**Related issue:** Part of #54170

Split from #55214 (part 8 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `qview` through `sonos`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…hrough tripmode) (#55307)

**Related issue:** Part of #54170

Split from #55214 (part 9 of 10). Regenerates the install scripts for
the 93 macOS Fleet-maintained apps from `sony-ps-remote-play` through
`tripmode` (alphabetical by slug) after #55157 changed the shared quit
helper to abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…zwift) (#55308)

**Related issue:** Part of #54170

Split from #55214 (part 10 of 10). Regenerates the install scripts for
the 90 macOS Fleet-maintained apps from `tunnelblick` through `zwift`
(alphabetical by slug) after #55157 changed the shared quit helper to
abort the install when the running app won't quit.

Every file in this PR gets the same change: a new `install_script_ref`
and the regenerated script under `refs`. No versions, installer URLs, or
hashes change here; those are in the "bumps and freezes" split.

The split PRs touch disjoint files, so they can merge in any order
without conflicts.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed app in this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)
allenhouchins added a commit that referenced this pull request Oct 10, 2026
…mps, and freezes (#55298)

**Related issue:** N/A, nightly Fleet-maintained apps ingestion.

Split from #55214. Carries every version, URL, hash, and input change
from the 2026-10-09 nightly run, so the remaining split PRs are
install-script regens only.

- Microsoft Defender: custom-tap cask bumped to 101.26072.0017.
- AnyDesk 9.8.1, Garmin Express 7.29.3, Google Gemini 1.128.7.1072:
version bumps, and the inputs are now frozen.
- Avast Secure Browser, Usage: inputs frozen, versions unchanged.
- Visual Paradigm: installer URL moved to the eu8.dl.visual-paradigm.com
host, same build.
- Willow Voice 2.6.1, WorkFlowy 4.3.2610082012: nightly version bumps.

All nine outputs also pick up the regenerated install script from
#55157.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs against every changed, non-frozen app in
this PR.

## AI

**AI:** Claude Code (claude-fable-5-1)



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Updates**
* Updated macOS releases for AnyDesk, Garmin Express, Google Gemini,
Microsoft Defender, Willow Voice, and Workflowy.
  * Updated the Visual Paradigm installer source.
* **Bug Fixes**
* Installations now stop if a running app cannot be quit within 10
seconds, helping prevent replacement while the app is still open.
* Quit checks now verify the app’s running state before installation
continues.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
allenhouchins added a commit that referenced this pull request Oct 10, 2026
**Related issue:** N/A

Split from #55214. Removes UPDF as a macOS Fleet-maintained app.
download.updf.com serves a Cloudflare challenge to every non-browser
client, so Fleet can't download the installer and the FMA validator
can't check it.

Removes the Homebrew input, the generated output, the `apps.json` entry,
and the app icon in the frontend and website.

## Split PRs from #55214

These touch disjoint files and can merge in any order.

- #55297 Remove UPDF
- #55298 Defender bump, nightly version bumps, and freezes
- #55299 Script regen 1/10: 010-editor through biscuit
- #55300 Script regen 2/10: bitbox through customshortcuts
- #55301 Script regen 3/10: cyberduck through fellow
- #55302 Script regen 4/10: ferdium through inkscape
- #55303 Script regen 5/10: input-source-pro through mattermost
- #55304 Script regen 6/10: meetingbar through omnifocus
- #55305 Script regen 7/10: omnigraffle through quip
- #55306 Script regen 8/10: qview through sonos
- #55307 Script regen 9/10: sony-ps-remote-play through tripmode
- #55308 Script regen 10/10: tunnelblick through zwift

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## Testing

- [ ] QA'd all new/changed functionality manually

The darwin FMA validator runs on this PR; UPDF itself is removed so
there is nothing to validate for it.

## AI

**AI:** Claude Code (claude-fable-5-1)

## Frontend

- [ ] Attached a screenshot or screen recording of each user-visible
change. Screenshot: N/A, this only removes the icon import and map entry
for an app that is no longer in the catalog.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Changes**
* Removed UPDF from the maintained macOS apps list. It is no longer
available through the app catalog or its software icon mapping.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

This branch was previously deployed

1 inactive deployment
Docker Hub — d9725187 Deployed Oct 10, 2026 by allenhouchins via publish #108567
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.

3 participants