From c1583a1cc7d17a74d379e1224d7f0cf6454bea13 Mon Sep 17 00:00:00 2001 From: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Date: Tue, 11 Aug 2026 12:19:25 +0000 Subject: [PATCH 1/2] Update Fleet-maintained apps. Generated automatically with cmd/maintained-apps. --- .../outputs/adobe-acrobat-pro/darwin.json | 4 ++-- .../outputs/adobe-acrobat-reader/windows.json | 8 ++++---- .../outputs/android-studio/darwin.json | 4 ++-- ee/maintained-apps/outputs/apidog/darwin.json | 8 ++++---- ee/maintained-apps/outputs/autopsy/windows.json | 15 ++++++++------- ee/maintained-apps/outputs/box-drive/darwin.json | 14 +++++++------- ee/maintained-apps/outputs/chatgpt/darwin.json | 8 ++++---- .../outputs/cisco-jabber/darwin.json | 4 ++-- .../outputs/citrix-workspace/darwin.json | 8 ++++---- .../outputs/cloudflare-warp/windows.json | 8 ++++---- ee/maintained-apps/outputs/codexbar/darwin.json | 8 ++++---- ee/maintained-apps/outputs/cog-app/darwin.json | 8 ++++---- .../outputs/creative-force-kelvin/windows.json | 8 ++++---- .../outputs/devin-desktop/darwin.json | 8 ++++---- ee/maintained-apps/outputs/docker/windows.json | 8 ++++---- ee/maintained-apps/outputs/drawio/windows.json | 8 ++++---- ee/maintained-apps/outputs/drofus/windows.json | 8 ++++---- ee/maintained-apps/outputs/dropbox/darwin.json | 8 ++++---- .../outputs/firefox@developer-edition/darwin.json | 8 ++++---- .../outputs/firefox@nightly/darwin.json | 4 ++-- ee/maintained-apps/outputs/framer/darwin.json | 8 ++++---- ee/maintained-apps/outputs/goland/windows.json | 8 ++++---- ee/maintained-apps/outputs/hive-app/darwin.json | 8 ++++---- .../outputs/keeper-password-manager/darwin.json | 4 ++-- .../outputs/lenovo-system-update/windows.json | 8 ++++---- ee/maintained-apps/outputs/localsend/darwin.json | 8 ++++---- .../outputs/microsoft-edge/windows.json | 8 ++++---- ee/maintained-apps/outputs/milanote/darwin.json | 8 ++++---- ee/maintained-apps/outputs/notion/darwin.json | 8 ++++---- ee/maintained-apps/outputs/notion/windows.json | 8 ++++---- .../outputs/nvidia-geforce-now/darwin.json | 4 ++-- ee/maintained-apps/outputs/obsidian/darwin.json | 8 ++++---- ee/maintained-apps/outputs/ok-json/darwin.json | 4 ++-- ee/maintained-apps/outputs/ollama/darwin.json | 8 ++++---- ee/maintained-apps/outputs/ollama/windows.json | 8 ++++---- ee/maintained-apps/outputs/onedrive/darwin.json | 8 ++++---- ee/maintained-apps/outputs/phpstorm/darwin.json | 8 ++++---- ee/maintained-apps/outputs/phpstorm/windows.json | 8 ++++---- ee/maintained-apps/outputs/postman/darwin.json | 8 ++++---- ee/maintained-apps/outputs/postman/windows.json | 8 ++++---- ee/maintained-apps/outputs/purevpn/darwin.json | 4 ++-- .../outputs/rocket-chat/darwin.json | 8 ++++---- ee/maintained-apps/outputs/shapr3d/darwin.json | 8 ++++---- ee/maintained-apps/outputs/shift/darwin.json | 8 ++++---- ee/maintained-apps/outputs/shift/windows.json | 8 ++++---- ee/maintained-apps/outputs/slack/darwin.json | 4 ++-- ee/maintained-apps/outputs/surge/darwin.json | 4 ++-- ee/maintained-apps/outputs/swiftbar/darwin.json | 8 ++++---- .../outputs/teleport-connect/darwin.json | 8 ++++---- .../outputs/teleport-connect/windows.json | 8 ++++---- .../outputs/teleport-suite/darwin.json | 14 +++++++------- ee/maintained-apps/outputs/termius/windows.json | 6 +++--- ee/maintained-apps/outputs/tower/darwin.json | 8 ++++---- ee/maintained-apps/outputs/unity-hub/darwin.json | 8 ++++---- ee/maintained-apps/outputs/webex/windows.json | 8 ++++---- ee/maintained-apps/outputs/zen/darwin.json | 8 ++++---- 56 files changed, 213 insertions(+), 212 deletions(-) diff --git a/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json b/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json index ce8935be51b..35656421386 100644 --- a/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json +++ b/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "26.001.21771", + "version": "26.001.21789", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Acrobat.Pro';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Acrobat.Pro' AND version_compare(bundle_short_version, '26.001.21771') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Acrobat.Pro' AND version_compare(bundle_short_version, '26.001.21789') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.adobe.Acrobat.Pro');" }, "installer_url": "https://trials.adobe.com/AdobeProducts/APRO/Acrobat_HelpX/osx10/Acrobat_DC_Web_WWMUI.dmg", diff --git a/ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json b/ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json index 319e822225a..31ac496effa 100644 --- a/ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json +++ b/ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "26.001.21771", + "version": "26.001.21789", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Adobe Acrobat (64-bit)' AND publisher = 'Adobe';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Adobe Acrobat (64-bit)' AND publisher = 'Adobe' AND version_compare(version, '26.001.21771') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Adobe Acrobat (64-bit)' AND publisher = 'Adobe' AND version_compare(version, '26.001.21789') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'adobe acrobat reader.exe');" }, - "installer_url": "https://ardownload3.adobe.com/pub/adobe/acrobat/win/AcrobatDC/2600121771/AcroRdrDCx642600121771_MUI.exe", + "installer_url": "https://ardownload2.adobe.com/pub/adobe/acrobat/win/AcrobatDC/2600121789/AcroRdrDCx642600121789_MUI.exe", "install_script_ref": "7dc0b065", "uninstall_script_ref": "3bb10c80", - "sha256": "290696326395fdd08cc11b467372ff68aa5e60e1d577a3910e1103a5690ceb4a", + "sha256": "f285a73605be56b07b21e7e57e4c55a15e65e513ef2316436a1d36adfa69e83b", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/android-studio/darwin.json b/ee/maintained-apps/outputs/android-studio/darwin.json index 82bbab82890..e124ce4fab6 100644 --- a/ee/maintained-apps/outputs/android-studio/darwin.json +++ b/ee/maintained-apps/outputs/android-studio/darwin.json @@ -7,10 +7,10 @@ "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.google.android.studio' AND version_compare(bundle_short_version, '2026.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.google.android.studio');" }, - "installer_url": "https://edgedl.me.gvt1.com/android/studio/install/2026.1.3.7/android-studio-quail3-mac_arm.dmg", + "installer_url": "https://edgedl.me.gvt1.com/android/studio/install/2026.1.3.8/android-studio-quail3-patch1-mac_arm.dmg", "install_script_ref": "2f5a5ada", "uninstall_script_ref": "aa386b1a", - "sha256": "e43fb8f880a419208f821befea17eb9ec1b00c5c2a20227db29c495411c5f99d", + "sha256": "aa77ef6919b22be51566dcd79603c323f7c403fa91dc79dc413eed7f6a05c048", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/apidog/darwin.json b/ee/maintained-apps/outputs/apidog/darwin.json index 43bbe13d5b3..8b43bbd2310 100644 --- a/ee/maintained-apps/outputs/apidog/darwin.json +++ b/ee/maintained-apps/outputs/apidog/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2.8.41", + "version": "2.8.42", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.apidog.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.apidog.app' AND version_compare(bundle_short_version, '2.8.41') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.apidog.app' AND version_compare(bundle_short_version, '2.8.42') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.apidog.app');" }, - "installer_url": "https://file-assets.apidog.com/download/2.8.41/legacy-Apidog-macOS-arm64-2.8.41.dmg", + "installer_url": "https://file-assets.apidog.com/download/2.8.42/legacy-Apidog-macOS-arm64-2.8.42.dmg", "install_script_ref": "b5f530c0", "uninstall_script_ref": "b51190cf", - "sha256": "64da7bf5bf1f3c07933516ac3b18662e80ee2a354c9a3759e44dc4ce76867940", + "sha256": "4b4efb3a7964ae08c1b5efde00ac87075852a79a07d09ec82b5a7d1b4ca2f3c4", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/autopsy/windows.json b/ee/maintained-apps/outputs/autopsy/windows.json index cbf2aee6c6d..25c009eb61a 100644 --- a/ee/maintained-apps/outputs/autopsy/windows.json +++ b/ee/maintained-apps/outputs/autopsy/windows.json @@ -1,23 +1,24 @@ { "versions": [ { - "version": "4.22.1", + "version": "4.23.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Autopsy' AND publisher = 'The Sleuth Kit';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Autopsy' AND publisher = 'The Sleuth Kit' AND version_compare(version, '4.22.1') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Autopsy' AND publisher = 'The Sleuth Kit' AND version_compare(version, '4.23.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'autopsy.exe');" }, - "installer_url": "https://github.com/sleuthkit/autopsy/releases/download/autopsy-4.22.1/autopsy-4.22.1-64bit.msi", + "installer_url": "https://github.com/sleuthkit/autopsy/releases/download/autopsy-4.23.1/autopsy-4.23.1-64bit.msi", "install_script_ref": "22e48c46", - "uninstall_script_ref": "e89e5716", - "sha256": "371897fbc40786e1e263391a226ef3c3622462234601268e3118fd3d3ce97521", + "uninstall_script_ref": "868c149c", + "sha256": "f0f368e10cf615a805c85248356673a00c88a5e19c3b632859a1c98569ae03b6", "default_categories": [ "Security" - ] + ], + "upgrade_code": "{6AAD1A1D-40C1-4515-B4D6-EA5A167FFA77}" } ], "refs": { "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", - "e89e5716": "$product_code = '{6BF79DCF-4641-4323-80A8-C43596518ECE}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n" + "868c149c": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{6AAD1A1D-40C1-4515-B4D6-EA5A167FFA77}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" } } diff --git a/ee/maintained-apps/outputs/box-drive/darwin.json b/ee/maintained-apps/outputs/box-drive/darwin.json index 21f6271202d..f76af05abdf 100644 --- a/ee/maintained-apps/outputs/box-drive/darwin.json +++ b/ee/maintained-apps/outputs/box-drive/darwin.json @@ -1,23 +1,23 @@ { "versions": [ { - "version": "2.53.219", + "version": "2.53.223", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.box.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.box.desktop' AND version_compare(bundle_short_version, '2.53.219') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.box.desktop' AND version_compare(bundle_short_version, '2.53.223') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.box.desktop');" }, - "installer_url": "https://e3.boxcdn.net/desktop/releases/mac/BoxDrive-2.53.219.pkg", - "install_script_ref": "0282e69d", + "installer_url": "https://e3.boxcdn.net/desktop/releases/mac/BoxDrive-2.53.223.pkg", + "install_script_ref": "346485a2", "uninstall_script_ref": "0b49ca2e", - "sha256": "69f70e9325fc2607ba12383867059ef0f37dfe62d146a65f213111cf92941fbf", + "sha256": "527dce43865032d4dfb9a68790ff52f4e108f48e24b016985a86e8824fa2fa89", "default_categories": [ "Productivity" ] } ], "refs": { - "0282e69d": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'com.box.desktop'\nsudo installer -pkg \"$TMPDIR/BoxDrive-2.53.219.pkg\" -target / || exit $?\nrelaunch_application 'com.box.desktop'\n", - "0b49ca2e": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n echo \"Expanding wildcard for PKGID: $PKGID\"\n for receipt in $(pkgutil --pkgs | grep \"^${prefix}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n # A wildcard label can't be used with launchctl or as a plist name, so expand\n # it to the labels of currently loaded services that match the pattern.\n local services=(\"$service\")\n if [[ \"$service\" == *\"*\"* ]]; then\n local regex\n # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so\n # it matches a full label rather than a substring.\n regex=$(printf '%s' \"$service\" | sed -e 's/[][(){}.^$+?|\\\\]/\\\\&/g' -e 's/\\*/.*/g')\n regex=\"^${regex}$\"\n services=()\n local id\n # Match every loaded job by label regardless of PID; launchctl list reports\n # loaded-but-not-running jobs with a \"-\" in the PID column.\n while read -r _ _ id; do\n [[ \"$id\" =~ $regex ]] && services+=(\"$id\")\n done < <(launchctl list 2>/dev/null | tail -n +2)\n if [[ ${#services[@]} -eq 0 ]]; then\n echo \"No loaded launchctl service matches ${service}\"\n return\n fi\n fi\n\n local service_label\n for service_label in \"${services[@]}\"; do\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service_label}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service_label}\"\n else\n launchctl remove \"${service_label}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service_label}.plist\"\n \"/Library/LaunchDaemons/${service_label}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n done\n}\n\nremove_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|/${INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER fileproviderctl domain remove -A com.box.desktop.boxfileprovider)\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER /Applications/Box.app/Contents/MacOS/fpe/streem --remove-fpe-domain-and-archive-unsynced-content Box)\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER /Applications/Box.app/Contents/MacOS/fpe/streem --remove-fpe-domain-and-preserve-unsynced-content Box)\n(cd /Users/$LOGGED_IN_USER; defaults delete com.box.desktop)\necho \"${LOGGED_IN_USER} ALL = (root) NOPASSWD: /Library/Application\\ Support/Box/uninstall_box_drive_r\" >> /etc/sudoers.d/box_uninstall\nremove_launchctl_service 'com.box.desktop.helper'\nquit_application 'com.box.Box-Local-Com-Server'\nquit_application 'com.box.desktop'\nquit_application 'com.box.desktop.findersyncext'\nquit_application 'com.box.desktop.helper'\nquit_application 'com.box.desktop.ui'\n(cd /Users/$LOGGED_IN_USER && sudo -u \"$LOGGED_IN_USER\" '/Library/Application Support/Box/uninstall_box_drive')\nremove_pkg_files 'com.box.desktop.installer.*'\nforget_pkg 'com.box.desktop.installer.*'\nrm /etc/sudoers.d/box_uninstall\ntrash $LOGGED_IN_USER '~/.Box_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Box/Box'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.box.desktop.boxfileprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.box.desktop.findersyncext'\ntrash $LOGGED_IN_USER '~/Library/Logs/Box/Box'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.box.desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.box.desktop.ui.plist'\n" + "0b49ca2e": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n echo \"Expanding wildcard for PKGID: $PKGID\"\n for receipt in $(pkgutil --pkgs | grep \"^${prefix}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n # A wildcard label can't be used with launchctl or as a plist name, so expand\n # it to the labels of currently loaded services that match the pattern.\n local services=(\"$service\")\n if [[ \"$service\" == *\"*\"* ]]; then\n local regex\n # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so\n # it matches a full label rather than a substring.\n regex=$(printf '%s' \"$service\" | sed -e 's/[][(){}.^$+?|\\\\]/\\\\&/g' -e 's/\\*/.*/g')\n regex=\"^${regex}$\"\n services=()\n local id\n # Match every loaded job by label regardless of PID; launchctl list reports\n # loaded-but-not-running jobs with a \"-\" in the PID column.\n while read -r _ _ id; do\n [[ \"$id\" =~ $regex ]] && services+=(\"$id\")\n done < <(launchctl list 2>/dev/null | tail -n +2)\n if [[ ${#services[@]} -eq 0 ]]; then\n echo \"No loaded launchctl service matches ${service}\"\n return\n fi\n fi\n\n local service_label\n for service_label in \"${services[@]}\"; do\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service_label}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service_label}\"\n else\n launchctl remove \"${service_label}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service_label}.plist\"\n \"/Library/LaunchDaemons/${service_label}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n done\n}\n\nremove_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|/${INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER fileproviderctl domain remove -A com.box.desktop.boxfileprovider)\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER /Applications/Box.app/Contents/MacOS/fpe/streem --remove-fpe-domain-and-archive-unsynced-content Box)\n(cd /Users/$LOGGED_IN_USER; sudo -u $LOGGED_IN_USER /Applications/Box.app/Contents/MacOS/fpe/streem --remove-fpe-domain-and-preserve-unsynced-content Box)\n(cd /Users/$LOGGED_IN_USER; defaults delete com.box.desktop)\necho \"${LOGGED_IN_USER} ALL = (root) NOPASSWD: /Library/Application\\ Support/Box/uninstall_box_drive_r\" >> /etc/sudoers.d/box_uninstall\nremove_launchctl_service 'com.box.desktop.helper'\nquit_application 'com.box.Box-Local-Com-Server'\nquit_application 'com.box.desktop'\nquit_application 'com.box.desktop.findersyncext'\nquit_application 'com.box.desktop.helper'\nquit_application 'com.box.desktop.ui'\n(cd /Users/$LOGGED_IN_USER && sudo -u \"$LOGGED_IN_USER\" '/Library/Application Support/Box/uninstall_box_drive')\nremove_pkg_files 'com.box.desktop.installer.*'\nforget_pkg 'com.box.desktop.installer.*'\nrm /etc/sudoers.d/box_uninstall\ntrash $LOGGED_IN_USER '~/.Box_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Box/Box'\ntrash $LOGGED_IN_USER '~/Library/Application Support/FileProvider/com.box.desktop.boxfileprovider'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.box.desktop.findersyncext'\ntrash $LOGGED_IN_USER '~/Library/Logs/Box/Box'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.box.desktop.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.box.desktop.ui.plist'\n", + "346485a2": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'com.box.desktop'\nsudo installer -pkg \"$TMPDIR/BoxDrive-2.53.223.pkg\" -target / || exit $?\nrelaunch_application 'com.box.desktop'\n" } } diff --git a/ee/maintained-apps/outputs/chatgpt/darwin.json b/ee/maintained-apps/outputs/chatgpt/darwin.json index 9536fa54219..e3065180b62 100644 --- a/ee/maintained-apps/outputs/chatgpt/darwin.json +++ b/ee/maintained-apps/outputs/chatgpt/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "26.803.41515", + "version": "26.803.81509", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat' AND version_compare(bundle_short_version, '26.803.41515') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat' AND version_compare(bundle_short_version, '26.803.81509') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.openai.chat');" }, - "installer_url": "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.803.41515.zip", + "installer_url": "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.803.81509.zip", "install_script_ref": "cbce2d7d", "uninstall_script_ref": "678e6cf0", - "sha256": "8abd46bf063bc27cbadcbc2863007ac44365b13a23ede17ceaee81fb9eeaeb9a", + "sha256": "34c7e629678ad5d63a639ec694a5b83b85f4e1bd7c21ee2abcfefbb041095b9c", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/cisco-jabber/darwin.json b/ee/maintained-apps/outputs/cisco-jabber/darwin.json index 0333e9f5830..f4119756d3e 100644 --- a/ee/maintained-apps/outputs/cisco-jabber/darwin.json +++ b/ee/maintained-apps/outputs/cisco-jabber/darwin.json @@ -7,10 +7,10 @@ "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.cisco.jabber' AND version_compare(bundle_short_version, '15.2.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.cisco.jabber');" }, - "installer_url": "https://binaries.webex.com/jabberclientmac/20260122074039/Install_Cisco-Jabber-Mac.pkg", + "installer_url": "https://binaries.webex.com/jabberclientmac/20260722023311/Install_Cisco-Jabber-Mac.pkg", "install_script_ref": "edbec29c", "uninstall_script_ref": "fe0e9261", - "sha256": "5644700e420febc1eca304c0a0f24bcff1e64b424112e1beda025d2eb78e16de", + "sha256": "bb71f8686049930033710f88698712e6aee6ed469516f3a73e48df8cecda4d61", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/citrix-workspace/darwin.json b/ee/maintained-apps/outputs/citrix-workspace/darwin.json index 016778ca85c..6ad8bb5b52d 100644 --- a/ee/maintained-apps/outputs/citrix-workspace/darwin.json +++ b/ee/maintained-apps/outputs/citrix-workspace/darwin.json @@ -7,17 +7,17 @@ "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.citrix.receiver.nomas' AND version_compare(bundle_short_version, '26.07.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.citrix.receiver.nomas');" }, - "installer_url": "https://downloadplugins.citrix.com/ReceiverUpdates/Prod/Receiver/Mac/CitrixWorkspaceAppUniversal26.07.0.71.pkg", - "install_script_ref": "a78b38b6", + "installer_url": "https://downloadplugins.citrix.com/ReceiverUpdates/Prod/Receiver/Mac/CitrixWorkspaceAppUniversal26.07.0.75.pkg", + "install_script_ref": "38dfe7fb", "uninstall_script_ref": "c847120e", - "sha256": "bc4d23adb9e0362d358159552069d2012c3513e6774266446141d88fc94ffe74", + "sha256": "c0f131263b108bbbf23d488b7a28fefa428fb4bef6551525b2ceec86b4d741e5", "default_categories": [ "Productivity" ] } ], "refs": { - "a78b38b6": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'com.citrix.receiver.nomas'\nsudo installer -pkg \"$TMPDIR/CitrixWorkspaceAppUniversal26.07.0.71.pkg\" -target / || exit $?\nrelaunch_application 'com.citrix.receiver.nomas'\n", + "38dfe7fb": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'com.citrix.receiver.nomas'\nsudo installer -pkg \"$TMPDIR/CitrixWorkspaceAppUniversal26.07.0.75.pkg\" -target / || exit $?\nrelaunch_application 'com.citrix.receiver.nomas'\n", "c847120e": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n echo \"Expanding wildcard for PKGID: $PKGID\"\n for receipt in $(pkgutil --pkgs | grep \"^${prefix}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nremove_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n # A wildcard label can't be used with launchctl or as a plist name, so expand\n # it to the labels of currently loaded services that match the pattern.\n local services=(\"$service\")\n if [[ \"$service\" == *\"*\"* ]]; then\n local regex\n # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so\n # it matches a full label rather than a substring.\n regex=$(printf '%s' \"$service\" | sed -e 's/[][(){}.^$+?|\\\\]/\\\\&/g' -e 's/\\*/.*/g')\n regex=\"^${regex}$\"\n services=()\n local id\n # Match every loaded job by label regardless of PID; launchctl list reports\n # loaded-but-not-running jobs with a \"-\" in the PID column.\n while read -r _ _ id; do\n [[ \"$id\" =~ $regex ]] && services+=(\"$id\")\n done < <(launchctl list 2>/dev/null | tail -n +2)\n if [[ ${#services[@]} -eq 0 ]]; then\n echo \"No loaded launchctl service matches ${service}\"\n return\n fi\n fi\n\n local service_label\n for service_label in \"${services[@]}\"; do\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service_label}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service_label}\"\n else\n launchctl remove \"${service_label}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service_label}.plist\"\n \"/Library/LaunchDaemons/${service_label}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\n done\n}\n\nremove_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|/${INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nremove_launchctl_service 'com.citrix.AuthManager_Mac'\nremove_launchctl_service 'com.citrix.ctxusbd'\nremove_launchctl_service 'com.citrix.CtxWorkspaceHelperDaemon'\nremove_launchctl_service 'com.citrix.ctxworkspaceupdater'\nremove_launchctl_service 'com.citrix.devicetrust.launchagent'\nremove_launchctl_service 'com.citrix.PluginBroker'\nremove_launchctl_service 'com.citrix.ReceiverHelper'\nremove_launchctl_service 'com.citrix.ReceiverUninstallHelper'\nremove_launchctl_service 'com.citrix.ReceiverUpdaterHelper'\nremove_launchctl_service 'com.citrix.safariadapter'\nremove_launchctl_service 'com.citrix.ServiceRecords'\nremove_launchctl_service 'com.citrix.UninstallMonitor'\nquit_application 'Citrix.ServiceRecords'\nquit_application 'com.citrix.CitrixReceiverLauncher'\nquit_application 'com.citrix.receiver.nomas'\nquit_application 'com.citrix.ReceiverHelper'\nremove_pkg_files 'com.citrix.common'\nforget_pkg 'com.citrix.common'\nremove_pkg_files 'com.citrix.devicetrust.client'\nforget_pkg 'com.citrix.devicetrust.client'\nremove_pkg_files 'com.citrix.devicetrust.client.ica'\nforget_pkg 'com.citrix.devicetrust.client.ica'\nremove_pkg_files 'com.citrix.enterprisebrowserinstaller'\nforget_pkg 'com.citrix.enterprisebrowserinstaller'\nremove_pkg_files 'com.citrix.ICAClient'\nforget_pkg 'com.citrix.ICAClient'\nremove_pkg_files 'com.citrix.ICAClientcwa'\nforget_pkg 'com.citrix.ICAClientcwa'\nremove_pkg_files 'com.citrix.ICAClienthdx'\nforget_pkg 'com.citrix.ICAClienthdx'\nremove_pkg_files 'com.citrix.receiver.bcr'\nforget_pkg 'com.citrix.receiver.bcr'\nsudo rm -rf '/Applications/Citrix Workspace.app'\nsudo rm -rf '/Library/Citrix Workspace'\ntrash $LOGGED_IN_USER '/Library/Logs/Citrix Workspace'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Citrix Receiver'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Citrix Workspace'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Citrix'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.citrix.CitrixReceiverLauncher'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.citrix.HdxRtcEngine'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.citrix.receiver*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.citrix.ReceiverUpdater'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.citrix.receiver*'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.citrix.CitrixReceiverLauncher'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.citrix.receiver*'\ntrash $LOGGED_IN_USER '~/Library/Logs/Citrix Workspace'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.citrix.AuthManager.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.citrix.CitrixReceiverLauncher.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.citrix.HdxRtcEngine.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.citrix.receiver*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.citrix.Receiver*.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.citrix.receiver.nomas.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.citrix.receiver.nomas'\n" } } diff --git a/ee/maintained-apps/outputs/cloudflare-warp/windows.json b/ee/maintained-apps/outputs/cloudflare-warp/windows.json index 3ba44e463b1..666f44a6b61 100644 --- a/ee/maintained-apps/outputs/cloudflare-warp/windows.json +++ b/ee/maintained-apps/outputs/cloudflare-warp/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "26.6.880.0", + "version": "26.6.905.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Cloudflare One Client' AND publisher = 'Cloudflare, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cloudflare One Client' AND publisher = 'Cloudflare, Inc.' AND version_compare(version, '26.6.880.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cloudflare One Client' AND publisher = 'Cloudflare, Inc.' AND version_compare(version, '26.6.905.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'cloudflare one.exe');" }, - "installer_url": "https://downloads.cloudflareclient.com/v1/download/windows/version/2026.6.880.0", + "installer_url": "https://downloads.cloudflareclient.com/v1/download/windows/version/2026.6.905.0", "install_script_ref": "22e48c46", "uninstall_script_ref": "cee7bc51", - "sha256": "ffcd1d803d774409ae54e565e85b7e03cd96450fd1654eee44f8a9e463078030", + "sha256": "d6c58ac9c18e2459d7173cf071812ebfdb1014ac6b9f041f4e1c37c7859c20f1", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/codexbar/darwin.json b/ee/maintained-apps/outputs/codexbar/darwin.json index 2ef8d43277d..39f1d596297 100644 --- a/ee/maintained-apps/outputs/codexbar/darwin.json +++ b/ee/maintained-apps/outputs/codexbar/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "0.49.1", + "version": "0.49.2", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.steipete.codexbar';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.steipete.codexbar' AND version_compare(bundle_short_version, '0.49.1') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.steipete.codexbar' AND version_compare(bundle_short_version, '0.49.2') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.steipete.codexbar');" }, - "installer_url": "https://github.com/steipete/CodexBar/releases/download/v0.49.1/CodexBar-macos-universal-0.49.1.zip", + "installer_url": "https://github.com/steipete/CodexBar/releases/download/v0.49.2/CodexBar-macos-universal-0.49.2.zip", "install_script_ref": "6993c93e", "uninstall_script_ref": "efcab822", - "sha256": "36a23aa7c584b3043b0effb1be2236faccf7b19b755dcbe994e7ac391ad48998", + "sha256": "4aa9f1816575007743ae87b8a5044def2c5942d58fe061151e695acb01d4eef8", "default_categories": [ "Utilities" ] diff --git a/ee/maintained-apps/outputs/cog-app/darwin.json b/ee/maintained-apps/outputs/cog-app/darwin.json index 985f29d4ca9..5e965fa562b 100644 --- a/ee/maintained-apps/outputs/cog-app/darwin.json +++ b/ee/maintained-apps/outputs/cog-app/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "3617", + "version": "3621", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.cogx.cog';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.cogx.cog' AND version_compare(bundle_short_version, '3617') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.cogx.cog' AND version_compare(bundle_short_version, '3621') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'org.cogx.cog');" }, - "installer_url": "https://cogcdn.cog.losno.co/Cog-65bd626a8.zip", + "installer_url": "https://cogcdn.cog.losno.co/Cog-6e1db27f1.zip", "install_script_ref": "ab9757fd", "uninstall_script_ref": "e84a8314", - "sha256": "b30bf9b1d1b17139c23f80718215025a014f07011eff781cc5719fdbe4c5a50b", + "sha256": "9e518c7c539d3b651ef4538f0d7a8d19a1a34a79367551010dcf237f178c863f", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/creative-force-kelvin/windows.json b/ee/maintained-apps/outputs/creative-force-kelvin/windows.json index 1a5b04a71e7..530b6838894 100644 --- a/ee/maintained-apps/outputs/creative-force-kelvin/windows.json +++ b/ee/maintained-apps/outputs/creative-force-kelvin/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "6.7.0", + "version": "6.8.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Kelvin' AND publisher = 'Creative Force';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Kelvin' AND publisher = 'Creative Force' AND version_compare(version, '6.7.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Kelvin' AND publisher = 'Creative Force' AND version_compare(version, '6.8.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'creative force kelvin.exe');" }, - "installer_url": "https://download.creativeforce.io/released-files.042024/prod/kelvin/win/Kelvin-6.7.0-win.msi", + "installer_url": "https://download.creativeforce.io/released-files.042024/prod/kelvin/win/Kelvin-6.8.0-win.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "afce06ed", - "sha256": "0e21052588d81e64a0197cc238974be191d75cc0e6661825f2615ed12f14dfcc", + "sha256": "0e84a8625bc8b658758f48e80c98a0da9d4998a8abe004aa0c857caea81b8ba4", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/devin-desktop/darwin.json b/ee/maintained-apps/outputs/devin-desktop/darwin.json index 76f756f03ab..169499b3f56 100644 --- a/ee/maintained-apps/outputs/devin-desktop/darwin.json +++ b/ee/maintained-apps/outputs/devin-desktop/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "3.6.27", + "version": "3.7.16", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.exafunction.windsurf';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.exafunction.windsurf' AND version_compare(bundle_short_version, '3.6.27') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.exafunction.windsurf' AND version_compare(bundle_short_version, '3.7.16') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.exafunction.windsurf');" }, - "installer_url": "https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/0becb483ee8498d49deadf6aefe8c24f58b8007e/Devin-darwin-arm64-3.6.27.dmg", + "installer_url": "https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/355c3c9ee32dad08f605d5ee8f9a7e6786316d4c/Devin-darwin-arm64-3.7.16.dmg", "install_script_ref": "cea2287e", "uninstall_script_ref": "4fdaa2d1", - "sha256": "ab28d18c4bc25befa6ab70e67a1c06eb53ec86101d23d8f27975adc59cf6ea93", + "sha256": "c59e629f0abe9fb9593c5b44eb2860f19caf6db6882b061e237a8e7d97e397c4", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/docker/windows.json b/ee/maintained-apps/outputs/docker/windows.json index 52068d0a3e7..2d2f3e30c2f 100644 --- a/ee/maintained-apps/outputs/docker/windows.json +++ b/ee/maintained-apps/outputs/docker/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "4.85.0", + "version": "4.86.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Docker Desktop' AND publisher = 'Docker Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Docker Desktop' AND publisher = 'Docker Inc.' AND version_compare(version, '4.85.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Docker Desktop' AND publisher = 'Docker Inc.' AND version_compare(version, '4.86.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'docker desktop.exe');" }, - "installer_url": "https://desktop.docker.com/win/main/amd64/235549/Docker%20Desktop%20Installer.exe", + "installer_url": "https://desktop.docker.com/win/main/amd64/236216/Docker%20Desktop%20Installer.exe", "install_script_ref": "b06042dd", "uninstall_script_ref": "0b74af50", - "sha256": "5417cedc1aeb16b488b8084025246b64a5e9da4d71388f324b107140dfe00699", + "sha256": "820438e75c16e44b393079154bea7d27958a15845c23a635b1a1f6f586b2ed44", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/drawio/windows.json b/ee/maintained-apps/outputs/drawio/windows.json index 4d2b4e6833d..9475dc73e03 100644 --- a/ee/maintained-apps/outputs/drawio/windows.json +++ b/ee/maintained-apps/outputs/drawio/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "31.1.5", + "version": "31.1.8", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'draw.io' AND publisher = 'JGraph';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'draw.io' AND publisher = 'JGraph' AND version_compare(version, '31.1.5') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'draw.io' AND publisher = 'JGraph' AND version_compare(version, '31.1.8') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'draw.io.exe');" }, - "installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v31.1.5/draw.io-31.1.5-windows-installer.exe", + "installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v31.1.8/draw.io-31.1.8-windows-installer.exe", "install_script_ref": "51038703", "uninstall_script_ref": "63a061f9", - "sha256": "dbb7efd2c06f9102fc7e80e38ed9a99e5b8d23257bfbdf81994c7686f830c971", + "sha256": "5e62b50085714032c75b2dd35fcc61b6d01294916b2d49f74ea9bf684aec9bb6", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/drofus/windows.json b/ee/maintained-apps/outputs/drofus/windows.json index 24ea0b8eebe..3a4bce4d972 100644 --- a/ee/maintained-apps/outputs/drofus/windows.json +++ b/ee/maintained-apps/outputs/drofus/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2.18.12.0", + "version": "2.18.13.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'dRofus %' AND publisher = 'dRofus AS';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'dRofus %' AND publisher = 'dRofus AS' AND version_compare(version, '2.18.12.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'dRofus %' AND publisher = 'dRofus AS' AND version_compare(version, '2.18.13.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'drofus.exe');" }, - "installer_url": "https://deploy.drofus.com/stable/drofus-setup-2.18.12.msi", + "installer_url": "https://deploy.drofus.com/stable/drofus-setup-2.18.13.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "72356dd1", - "sha256": "6ac683ecdb27cea0ee47a0494d3140d3a7183e2e2f1ffd49e070d2b1fd7a1f5b", + "sha256": "8f91c36040591a9560aafc2c019493d60410388af6075825cb88ac3183a27cdc", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/dropbox/darwin.json b/ee/maintained-apps/outputs/dropbox/darwin.json index 59cda0ba866..1a0bf2fd0de 100644 --- a/ee/maintained-apps/outputs/dropbox/darwin.json +++ b/ee/maintained-apps/outputs/dropbox/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "264.4.3385", + "version": "264.4.3421", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.getdropbox.dropbox';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.getdropbox.dropbox' AND version_compare(bundle_short_version, '264.4.3385') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.getdropbox.dropbox' AND version_compare(bundle_short_version, '264.4.3421') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.getdropbox.dropbox');" }, - "installer_url": "https://edge.dropboxstatic.com/dbx-releng/client/Dropbox%20264.4.3385.arm64.dmg", + "installer_url": "https://edge.dropboxstatic.com/dbx-releng/client/Dropbox%20264.4.3421.arm64.dmg", "install_script_ref": "dcd0d19e", "uninstall_script_ref": "3af4988a", - "sha256": "e4c8b5735ac893a03838a4c0fa27bfb6d2dd3c7cc513235294ae69279b8d4748", + "sha256": "0a2213393bfc15362bdd1f3a08876119084fbe2dc2f95aad3d35df1da3c372d4", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json b/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json index 56aaf5a30bc..a6c94e8d1d2 100644 --- a/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json +++ b/ee/maintained-apps/outputs/firefox@developer-edition/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "154.0b8", + "version": "154.0b9", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefoxdeveloperedition';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefoxdeveloperedition' AND version_compare(bundle_version, '15426.8.7') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.firefoxdeveloperedition' AND version_compare(bundle_version, '15426.8.10') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'org.mozilla.firefoxdeveloperedition');" }, - "installer_url": "https://download-installer.cdn.mozilla.net/pub/devedition/releases/154.0b8/mac/en-US/Firefox%20154.0b8.dmg", + "installer_url": "https://download-installer.cdn.mozilla.net/pub/devedition/releases/154.0b9/mac/en-US/Firefox%20154.0b9.dmg", "install_script_ref": "b679ecd7", "uninstall_script_ref": "292c5733", - "sha256": "fb371168991370f5652614a5d6df96ecb7a9fb2d19aa6b2f8255f439cd26942b", + "sha256": "5ed2ade76d64ed7aaa8bf49a51decc96df52f776916426b8adaa3eca89b5fd3b", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/firefox@nightly/darwin.json b/ee/maintained-apps/outputs/firefox@nightly/darwin.json index 03bef72d57d..9ef4bc27ada 100644 --- a/ee/maintained-apps/outputs/firefox@nightly/darwin.json +++ b/ee/maintained-apps/outputs/firefox@nightly/darwin.json @@ -7,10 +7,10 @@ "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.nightly' AND version_compare(bundle_version, '15526.8.10') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'org.mozilla.nightly');" }, - "installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/08/2026-08-10-09-30-15-mozilla-central/firefox-155.0a1.en-US.mac.dmg", + "installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/08/2026-08-10-20-20-13-mozilla-central/firefox-155.0a1.en-US.mac.dmg", "install_script_ref": "d9c4cf87", "uninstall_script_ref": "0661f848", - "sha256": "d71c1e39201452b3b6f46a671b264e61603ae6983609da4f37620b3651564749", + "sha256": "94a8abe08b637982bcddb6efc8079a253e18c815cffc3aee5061ac9c92274896", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/framer/darwin.json b/ee/maintained-apps/outputs/framer/darwin.json index 38328f8d790..261b5237859 100644 --- a/ee/maintained-apps/outputs/framer/darwin.json +++ b/ee/maintained-apps/outputs/framer/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2026.31.2", + "version": "2026.32.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.framer.electron';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.framer.electron' AND version_compare(bundle_short_version, '2026.31.2') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.framer.electron' AND version_compare(bundle_short_version, '2026.32.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.framer.electron');" }, - "installer_url": "https://updates.framer.com/electron/darwin/arm64/Framer-2026.31.2.zip", + "installer_url": "https://updates.framer.com/electron/darwin/arm64/Framer-2026.32.0.zip", "install_script_ref": "76134736", "uninstall_script_ref": "12495d2a", - "sha256": "79535f157aec630ec4ffdb94911abaeea3338474706de5490019719a8c3357fc", + "sha256": "324c1fcad50b801c5e03ac38682e7556895eae8dd6bd841050e8163c04aaa9e9", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/goland/windows.json b/ee/maintained-apps/outputs/goland/windows.json index efa04bd55dd..60abd1d4fc6 100644 --- a/ee/maintained-apps/outputs/goland/windows.json +++ b/ee/maintained-apps/outputs/goland/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2026.2", + "version": "2026.2.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'GoLand %' AND publisher = 'JetBrains s.r.o.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'GoLand %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.8665.270') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'GoLand %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.9437.195') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) IN ('goland.exe','goland64.exe'));" }, - "installer_url": "https://download.jetbrains.com/go/goland-2026.2.exe", + "installer_url": "https://download.jetbrains.com/go/goland-2026.2.1.exe", "install_script_ref": "6d754683", "uninstall_script_ref": "f2b296c7", - "sha256": "22ab9a1594c26894c0e470d0ac6f21177c7174b486cbd81130260e907895ee96", + "sha256": "9cea23f70179edc0c573c158828fe0721c63ba70a813fcc8e89283a085fedd0a", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/hive-app/darwin.json b/ee/maintained-apps/outputs/hive-app/darwin.json index 3b8d53a064b..035cc2e301f 100644 --- a/ee/maintained-apps/outputs/hive-app/darwin.json +++ b/ee/maintained-apps/outputs/hive-app/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "1.2.28", + "version": "1.2.29", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app' AND version_compare(bundle_short_version, '1.2.28') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app' AND version_compare(bundle_short_version, '1.2.29') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.hive.app');" }, - "installer_url": "https://github.com/morapelker/hive/releases/download/v1.2.28/Hive-1.2.28-arm64.dmg", + "installer_url": "https://github.com/morapelker/hive/releases/download/v1.2.29/Hive-1.2.29-arm64.dmg", "install_script_ref": "3bd4ebe4", "uninstall_script_ref": "951b5587", - "sha256": "28a7895ef90b664ac4eb39a428405f6da91f40c350b0fe6f27cb37ed6bcc76d1", + "sha256": "a8cc14e2a8b8d617fc0e821e4475d32bd344da99b4645acb48e629e734dc31fa", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/keeper-password-manager/darwin.json b/ee/maintained-apps/outputs/keeper-password-manager/darwin.json index bad004d6816..81461fd32ff 100644 --- a/ee/maintained-apps/outputs/keeper-password-manager/darwin.json +++ b/ee/maintained-apps/outputs/keeper-password-manager/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "18.5.0", + "version": "18.6.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager' AND version_compare(bundle_short_version, '18.5.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager' AND version_compare(bundle_short_version, '18.6.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.keepersecurity.passwordmanager');" }, "installer_url": "https://keepersecurity.com/desktop_electron/Darwin/KeeperSetup.dmg", diff --git a/ee/maintained-apps/outputs/lenovo-system-update/windows.json b/ee/maintained-apps/outputs/lenovo-system-update/windows.json index 093594c844a..b3daf208df4 100644 --- a/ee/maintained-apps/outputs/lenovo-system-update/windows.json +++ b/ee/maintained-apps/outputs/lenovo-system-update/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "5.08.03.59", + "version": "5.08.04.85", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Lenovo System Update';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Lenovo System Update' AND version_compare(version, '5.08.03.59') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Lenovo System Update' AND version_compare(version, '5.08.04.85') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'lenovo system update.exe');" }, - "installer_url": "https://download.lenovo.com/pccbbs/thinkvantage_en/system_update_5.08.03.59.exe", + "installer_url": "https://download.lenovo.com/pccbbs/thinkvantage_en/system_update_5.08.04.85.exe", "install_script_ref": "04c67509", "uninstall_script_ref": "aca82ee7", - "sha256": "e66794dc561a3e58e3dc68556eb053ee32b674ac9d99638e473ef7322f353e0d", + "sha256": "4f044c4a1cece3fe4be22408da7e1d8e8338eeaae4491ce18fdaa5b655dc9585", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/localsend/darwin.json b/ee/maintained-apps/outputs/localsend/darwin.json index 3a4cb6f28f6..be0413b88ae 100644 --- a/ee/maintained-apps/outputs/localsend/darwin.json +++ b/ee/maintained-apps/outputs/localsend/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "1.17.0", + "version": "1.18.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.localsend.localsendApp';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.localsend.localsendApp' AND version_compare(bundle_short_version, '1.17.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.localsend.localsendApp' AND version_compare(bundle_short_version, '1.18.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'org.localsend.localsendApp');" }, - "installer_url": "https://github.com/localsend/localsend/releases/download/v1.17.0/LocalSend-1.17.0.dmg", + "installer_url": "https://github.com/localsend/localsend/releases/download/v1.18.0/LocalSend-1.18.0.dmg", "install_script_ref": "f3e3757e", "uninstall_script_ref": "59b942e3", - "sha256": "fdf1a42ee13eb9fdd6ae94dc5883981e8a09599e758bde23f6e677c4fab5c93c", + "sha256": "93ab884c2703a0fabd72611097b2616c0def86c4256cea2add7a0ff36dd76b3a", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/microsoft-edge/windows.json b/ee/maintained-apps/outputs/microsoft-edge/windows.json index ce0c7cb9a1e..0e93b99e72a 100644 --- a/ee/maintained-apps/outputs/microsoft-edge/windows.json +++ b/ee/maintained-apps/outputs/microsoft-edge/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "151.0.4129.72", + "version": "151.0.4129.78", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation' AND version_compare(version, '151.0.4129.72') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation' AND version_compare(version, '151.0.4129.78') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'msedge.exe');" }, - "installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/2ae295aa-6f3e-46de-b26b-c0188683d4fa/MicrosoftEdgeEnterpriseX64.msi", + "installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/f5e477ef-f201-49dd-866a-8e25850421dd/MicrosoftEdgeEnterpriseX64.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "e12e9902", - "sha256": "edf3e24eb291b26bbd09c0a7477e30ce32897e4692743b47961cc40c0cfa8685", + "sha256": "716b2549eedf4305b92d149186f878394c8d8b7b743db0eaaec773349ed3c273", "default_categories": [ "Browsers" ], diff --git a/ee/maintained-apps/outputs/milanote/darwin.json b/ee/maintained-apps/outputs/milanote/darwin.json index 8adbae3e577..15c9b563d41 100644 --- a/ee/maintained-apps/outputs/milanote/darwin.json +++ b/ee/maintained-apps/outputs/milanote/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "3.18.119", + "version": "3.18.120", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.milanote.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.milanote.app' AND version_compare(bundle_short_version, '3.18.119') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.milanote.app' AND version_compare(bundle_short_version, '3.18.120') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.milanote.app');" }, - "installer_url": "https://milanote-app-releases.s3.amazonaws.com/Milanote-3.18.119.dmg", + "installer_url": "https://milanote-app-releases.s3.amazonaws.com/Milanote-3.18.120.dmg", "install_script_ref": "7bb39759", "uninstall_script_ref": "19269206", - "sha256": "f0ffbd9cd08d35036362bb541461358be772e53b03811a004d2c769475a982d8", + "sha256": "b1240ab1b13a09959dc80fdf07e2e8e17c234a99af4f3bb219aa37de1664297f", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/notion/darwin.json b/ee/maintained-apps/outputs/notion/darwin.json index 1ccef5a85ac..2a4ba10eb4a 100644 --- a/ee/maintained-apps/outputs/notion/darwin.json +++ b/ee/maintained-apps/outputs/notion/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "7.29.0", + "version": "7.30.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'notion.id';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'notion.id' AND version_compare(bundle_short_version, '7.29.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'notion.id' AND version_compare(bundle_short_version, '7.30.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'notion.id');" }, - "installer_url": "https://desktop-release.notion-static.com/Notion-7.29.0-arm64.dmg", + "installer_url": "https://desktop-release.notion-static.com/Notion-7.30.0-arm64.dmg", "install_script_ref": "48cf3d91", "uninstall_script_ref": "ac52c373", - "sha256": "896fe4fb484316f6a4f99a5287855b3cdbcbc83d418a89d331452b25d9362c73", + "sha256": "682de6f0081151ecc965980a254504bd975c33c65a6feadd785340aedb4c7524", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/notion/windows.json b/ee/maintained-apps/outputs/notion/windows.json index ed8d46eba02..de4831d7b80 100644 --- a/ee/maintained-apps/outputs/notion/windows.json +++ b/ee/maintained-apps/outputs/notion/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "7.29.0", + "version": "7.30.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Notion %' AND publisher = 'Notion Labs, Inc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Notion %' AND publisher = 'Notion Labs, Inc' AND version_compare(version, '7.29.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Notion %' AND publisher = 'Notion Labs, Inc' AND version_compare(version, '7.30.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'notion.exe');" }, - "installer_url": "https://desktop-release.notion-static.com/Notion%20Setup%207.29.0.exe", + "installer_url": "https://desktop-release.notion-static.com/Notion%20Setup%207.30.0.exe", "install_script_ref": "0803ad8c", "uninstall_script_ref": "a8fdd9b7", - "sha256": "5e731fe1eb16da91a3a322fda0f31f24fca95def1fc908c26d871d9eac67e3a2", + "sha256": "81df197758c538106b21651395ce18307bda173b25908390a96e911d115deaf0", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json b/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json index 36263097282..dc39d27c6dc 100644 --- a/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json +++ b/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "2.0.87.131", + "version": "2.0.87.134", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.nvidia.gfnpc.mall';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.nvidia.gfnpc.mall' AND version_compare(bundle_short_version, '2.0.87.131') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.nvidia.gfnpc.mall' AND version_compare(bundle_short_version, '2.0.87.134') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.nvidia.gfnpc.mall');" }, "installer_url": "https://download.nvidia.com/gfnpc/GeForceNOW-release.dmg", diff --git a/ee/maintained-apps/outputs/obsidian/darwin.json b/ee/maintained-apps/outputs/obsidian/darwin.json index 90d8b2b70e4..b970f1ca066 100644 --- a/ee/maintained-apps/outputs/obsidian/darwin.json +++ b/ee/maintained-apps/outputs/obsidian/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "1.13.4", + "version": "1.13.6", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'md.obsidian';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'md.obsidian' AND version_compare(bundle_short_version, '1.13.4') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'md.obsidian' AND version_compare(bundle_short_version, '1.13.6') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'md.obsidian');" }, - "installer_url": "https://github.com/obsidianmd/obsidian-releases/releases/download/v1.13.4/Obsidian-1.13.4.dmg", + "installer_url": "https://github.com/obsidianmd/obsidian-releases/releases/download/v1.13.6/Obsidian-1.13.6.dmg", "install_script_ref": "2a90e12f", "uninstall_script_ref": "06bfea71", - "sha256": "e84b9595aba5e50221c97e43d3e3f437416edfbf4c4a84c379461e70f854d78f", + "sha256": "8bb75d1553e11b4a640947d9cca7211a842b703a5b7d5b688d68920155c24f74", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/ok-json/darwin.json b/ee/maintained-apps/outputs/ok-json/darwin.json index 3308b63f451..1d60213d476 100644 --- a/ee/maintained-apps/outputs/ok-json/darwin.json +++ b/ee/maintained-apps/outputs/ok-json/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "3.0", + "version": "3.0.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'net.shinystone.OKJSON';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.shinystone.OKJSON' AND version_compare(bundle_short_version, '3.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.shinystone.OKJSON' AND version_compare(bundle_short_version, '3.0.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'net.shinystone.OKJSON');" }, "installer_url": "https://okjson.app/download/okjson-latest.dmg", diff --git a/ee/maintained-apps/outputs/ollama/darwin.json b/ee/maintained-apps/outputs/ollama/darwin.json index 830a3b867bf..ccdc7d25fe1 100644 --- a/ee/maintained-apps/outputs/ollama/darwin.json +++ b/ee/maintained-apps/outputs/ollama/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "0.32.7", + "version": "0.32.8", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.ollama';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.ollama' AND version_compare(bundle_short_version, '0.32.7') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.ollama' AND version_compare(bundle_short_version, '0.32.8') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.electron.ollama');" }, - "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.7/Ollama-darwin.zip", + "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.8/Ollama-darwin.zip", "install_script_ref": "dd889e18", "uninstall_script_ref": "ecec947d", - "sha256": "2dbf637dd0e9bd1bff58cceef021b6b300b33e200e450ed21710200427d50996", + "sha256": "a05683386dbb826113d6e2d15925c85870e88ce0ba35df7e89a1a903d7603dab", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/ollama/windows.json b/ee/maintained-apps/outputs/ollama/windows.json index bb8949e38fd..ecc8c1e881e 100644 --- a/ee/maintained-apps/outputs/ollama/windows.json +++ b/ee/maintained-apps/outputs/ollama/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "0.32.6", + "version": "0.32.8", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Ollama' AND publisher = 'Ollama';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Ollama' AND publisher = 'Ollama' AND version_compare(version, '0.32.6') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Ollama' AND publisher = 'Ollama' AND version_compare(version, '0.32.8') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) IN ('ollama.exe','ollama app.exe'));" }, - "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.6/OllamaSetup.exe", + "installer_url": "https://github.com/ollama/ollama/releases/download/v0.32.8/OllamaSetup.exe", "install_script_ref": "e14c71ee", "uninstall_script_ref": "3f049b5d", - "sha256": "526e47db7c295d017e9514df5bb20c6f32b3d1170f2c8bb9c59b53185f5bd6ff", + "sha256": "cba870e7111bd141623531faa694a77af2c66a414832de712f8bc1d67a7b163c", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/onedrive/darwin.json b/ee/maintained-apps/outputs/onedrive/darwin.json index fee3ed6c6fe..b23d38a9755 100644 --- a/ee/maintained-apps/outputs/onedrive/darwin.json +++ b/ee/maintained-apps/outputs/onedrive/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "26.119.0622.0003", + "version": "26.134.0713.0007", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.OneDrive';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.OneDrive' AND version_compare(bundle_short_version, '26.119.0622.0003') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.OneDrive' AND version_compare(bundle_short_version, '26.134.0713.0007') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.microsoft.OneDrive');" }, - "installer_url": "https://oneclient.sfx.ms/Mac/Installers/26.119.0622.0003/universal/OneDrive.pkg", + "installer_url": "https://oneclient.sfx.ms/Mac/Installers/26.134.0713.0007/universal/OneDrive.pkg", "install_script_ref": "dce2d064", "uninstall_script_ref": "b1c16fe2", - "sha256": "ed8037715552d25538207786b36503ead1be5d5c8cd457c4cabba67df7a11e35", + "sha256": "9d7be342f73c72c26564e25fdf59c0fcc0725d6e83b89d5a62e31a462777605d", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/phpstorm/darwin.json b/ee/maintained-apps/outputs/phpstorm/darwin.json index ec6af2e7435..36cb0aee01d 100644 --- a/ee/maintained-apps/outputs/phpstorm/darwin.json +++ b/ee/maintained-apps/outputs/phpstorm/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2026.2.0.1", + "version": "2026.2.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.PhpStorm';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.PhpStorm' AND version_compare(bundle_short_version, '2026.2.0.1') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.PhpStorm' AND version_compare(bundle_short_version, '2026.2.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.jetbrains.PhpStorm');" }, - "installer_url": "https://download.jetbrains.com/webide/PhpStorm-2026.2.0.1-aarch64.dmg", + "installer_url": "https://download.jetbrains.com/webide/PhpStorm-2026.2.1-aarch64.dmg", "install_script_ref": "fc06193f", "uninstall_script_ref": "d37d13f0", - "sha256": "7c8eb4c49f78a27997033241cb7f865079c91fefee9104c2b94da3decd59239a", + "sha256": "6986b320cee2da75075b3a99dd8fea79e8eee843e1f1f7652012949a21e56111", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/phpstorm/windows.json b/ee/maintained-apps/outputs/phpstorm/windows.json index 557a36bc3c1..3cb62b13dca 100644 --- a/ee/maintained-apps/outputs/phpstorm/windows.json +++ b/ee/maintained-apps/outputs/phpstorm/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2026.2.0.1", + "version": "2026.2.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'PhpStorm %' AND publisher = 'JetBrains s.r.o.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'PhpStorm %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.8665.325') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'PhpStorm %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.9437.196') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) IN ('phpstorm.exe','phpstorm64.exe'));" }, - "installer_url": "https://download.jetbrains.com/webide/PhpStorm-2026.2.0.1.exe", + "installer_url": "https://download.jetbrains.com/webide/PhpStorm-2026.2.1.exe", "install_script_ref": "ea27a84f", "uninstall_script_ref": "909d4772", - "sha256": "a52e585a522347aa018ba9c81a22542cf042a560d5737c09e8466a5cb8c2f6a8", + "sha256": "0b903a2663bd631c11b945b649cc985ff6a3a64648fe0443c0d647b6161a7926", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/postman/darwin.json b/ee/maintained-apps/outputs/postman/darwin.json index ab85cba5079..775124ffbfa 100644 --- a/ee/maintained-apps/outputs/postman/darwin.json +++ b/ee/maintained-apps/outputs/postman/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "12.22.8", + "version": "12.23.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac' AND version_compare(bundle_short_version, '12.22.8') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac' AND version_compare(bundle_short_version, '12.23.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.postmanlabs.mac');" }, - "installer_url": "https://dl.pstmn.io/download/version/12.22.8/osx_arm64", + "installer_url": "https://dl.pstmn.io/download/version/12.23.1/osx_arm64", "install_script_ref": "0e85ef74", "uninstall_script_ref": "20883323", - "sha256": "0d6e739925360e6482a9b557782b0ef031485d22d431c4b197fc9a03e18a48e7", + "sha256": "67a27e2ff78aac86b44465b679af042d7ce85a2bad46ef5db3127a106d805945", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/postman/windows.json b/ee/maintained-apps/outputs/postman/windows.json index e9ff719557c..ad7e127378a 100644 --- a/ee/maintained-apps/outputs/postman/windows.json +++ b/ee/maintained-apps/outputs/postman/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "12.22.8", + "version": "12.23.1", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman' AND version_compare(version, '12.22.8') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman' AND version_compare(version, '12.23.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'postman.exe');" }, - "installer_url": "https://dl.pstmn.io/download/version/12.22.8/windows_64", + "installer_url": "https://dl.pstmn.io/download/version/12.23.1/windows_64", "install_script_ref": "8594f0bc", "uninstall_script_ref": "fd59d029", - "sha256": "c3b93a45d2378135135ec9bea99657f39c405b6b218d16a92a94228bf45ac032", + "sha256": "cb51813e0ad74967780569ecadd90d7cffe73126d1e13da3a7e9265a003b53a9", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/purevpn/darwin.json b/ee/maintained-apps/outputs/purevpn/darwin.json index b8b576c870b..c5ba6b2bd02 100644 --- a/ee/maintained-apps/outputs/purevpn/darwin.json +++ b/ee/maintained-apps/outputs/purevpn/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "9.45.0", + "version": "9.46.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.purevpn.app.mac';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.purevpn.app.mac' AND version_compare(bundle_short_version, '9.45.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.purevpn.app.mac' AND version_compare(bundle_short_version, '9.46.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.purevpn.app.mac');" }, "installer_url": "https://dzglif4kkvz04.cloudfront.net/mac-2.0/packages/Production/PureVPN.pkg", diff --git a/ee/maintained-apps/outputs/rocket-chat/darwin.json b/ee/maintained-apps/outputs/rocket-chat/darwin.json index 969d8963d21..31b9ef6437e 100644 --- a/ee/maintained-apps/outputs/rocket-chat/darwin.json +++ b/ee/maintained-apps/outputs/rocket-chat/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "4.15.6", + "version": "4.16.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'chat.rocket';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'chat.rocket' AND version_compare(bundle_short_version, '4.15.6') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'chat.rocket' AND version_compare(bundle_short_version, '4.16.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'chat.rocket');" }, - "installer_url": "https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/4.15.6/rocketchat-4.15.6-mac.dmg", + "installer_url": "https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/4.16.0/rocketchat-4.16.0-mac.dmg", "install_script_ref": "56506355", "uninstall_script_ref": "36b46743", - "sha256": "cef12bcb3e59251132b2195357c1251601af5be54e0120cc2d33a91c09460ceb", + "sha256": "9635eda6fe78a49a3ca1c8a31c88d6e2d13e5c022963cea957025dec1b44ca72", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/shapr3d/darwin.json b/ee/maintained-apps/outputs/shapr3d/darwin.json index 9b0b3bade5f..1f463d932da 100644 --- a/ee/maintained-apps/outputs/shapr3d/darwin.json +++ b/ee/maintained-apps/outputs/shapr3d/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "26.142.0.11496", + "version": "26.143.0.11521", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.shapr3d.shapr';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.shapr3d.shapr' AND version_compare(bundle_short_version, '26.142.0.11496') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.shapr3d.shapr' AND version_compare(bundle_short_version, '26.143.0.11521') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.shapr3d.shapr');" }, - "installer_url": "https://download.shapr3d.com/mac/Shapr3D-26.142.0.11496.dmg", + "installer_url": "https://download.shapr3d.com/mac/Shapr3D-26.143.0.11521.dmg", "install_script_ref": "aa7e3fbc", "uninstall_script_ref": "261544b8", - "sha256": "b8c2fa6644856c631d942f61d2f4922185f3344325d66d1f1bdfb3e1ea68244a", + "sha256": "c5c79388084fd23af505c81ff30c6a44832749f33297078ffa207485edd3bafb", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/shift/darwin.json b/ee/maintained-apps/outputs/shift/darwin.json index 297e81ab8f0..8635c6436fb 100644 --- a/ee/maintained-apps/outputs/shift/darwin.json +++ b/ee/maintained-apps/outputs/shift/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "9.6.7.1268", + "version": "9.6.8.1270", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.rdbrck.shift';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.rdbrck.shift' AND version_compare(bundle_short_version, '9.6.7.1268') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.rdbrck.shift' AND version_compare(bundle_short_version, '9.6.8.1270') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.rdbrck.shift');" }, - "installer_url": "https://updates.tryshift.com/v9.6.7/stable/shift-v9.6.7.1268-stable-arm64.dmg", + "installer_url": "https://updates.tryshift.com/v9.6.8/stable/shift-v9.6.8.1270-stable-arm64.dmg", "install_script_ref": "526e5310", "uninstall_script_ref": "c93f6ce6", - "sha256": "8a70d9e5a86511d5ac025e582faf18a506f38117c48fa4c337de3f5b3c97a40a", + "sha256": "1b567995c2dd75168dee38118a79ff807f7a9622c68efd34e923b9bc9862a981", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/shift/windows.json b/ee/maintained-apps/outputs/shift/windows.json index 659f3d7e016..40acc2c0cd0 100644 --- a/ee/maintained-apps/outputs/shift/windows.json +++ b/ee/maintained-apps/outputs/shift/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "9.6.7.1268", + "version": "9.6.8.1270", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Shift' AND publisher = 'Shift Technologies, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Shift' AND publisher = 'Shift Technologies, Inc.' AND version_compare(version, '9.6.7.1268') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Shift' AND publisher = 'Shift Technologies, Inc.' AND version_compare(version, '9.6.8.1270') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'shift.exe');" }, - "installer_url": "https://updates.tryshift.com/v9.6.7/stable/shift-v9.6.7.1268-stable-x64.exe", + "installer_url": "https://updates.tryshift.com/v9.6.8/stable/shift-v9.6.8.1270-stable-x64.exe", "install_script_ref": "fbf50bbc", "uninstall_script_ref": "c5cc1d5a", - "sha256": "5a4b5f629c3a9fc06d573edbbd74d6a52fa655642a8b24a58997ac4cf8b48b3b", + "sha256": "a340976691a87748172bdb46ac959940a21ef520fd143da91d26c2395d0f0d69", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/slack/darwin.json b/ee/maintained-apps/outputs/slack/darwin.json index 3a965817eff..8dd377e351a 100644 --- a/ee/maintained-apps/outputs/slack/darwin.json +++ b/ee/maintained-apps/outputs/slack/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "4.51.180", + "version": "4.51.185", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyspeck.slackmacgap';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyspeck.slackmacgap' AND version_compare(bundle_short_version, '4.51.180') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tinyspeck.slackmacgap' AND version_compare(bundle_short_version, '4.51.185') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.tinyspeck.slackmacgap');" }, "installer_url": "https://slack.com/api/desktop.latestRelease?redirect=1&variant=pkg&arch=universal", diff --git a/ee/maintained-apps/outputs/surge/darwin.json b/ee/maintained-apps/outputs/surge/darwin.json index cc20992a4fc..6e943ac1110 100644 --- a/ee/maintained-apps/outputs/surge/darwin.json +++ b/ee/maintained-apps/outputs/surge/darwin.json @@ -7,10 +7,10 @@ "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.nssurge.surge-mac' AND version_compare(bundle_short_version, '6.8.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.nssurge.surge-mac');" }, - "installer_url": "https://dl.nssurge.com/mac/v6/Surge-6.8.1-12010-eb73e613f5ff5c87c5422ca691ce136d.zip", + "installer_url": "https://dl.nssurge.com/mac/v6/Surge-6.8.1-12030-69f4be88db9663476f31a6b264109f0b.zip", "install_script_ref": "591d4936", "uninstall_script_ref": "73bb9941", - "sha256": "ad975f4869632b1cb8808c020bdb0a39a239f05edf6fc5088ce08068efc7efb5", + "sha256": "ad99691d823b2f7d4504a39170b01bf4f8639da7c6857c583a57cdf46e5c05c4", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/swiftbar/darwin.json b/ee/maintained-apps/outputs/swiftbar/darwin.json index d81662cbb48..051c5629d38 100644 --- a/ee/maintained-apps/outputs/swiftbar/darwin.json +++ b/ee/maintained-apps/outputs/swiftbar/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "2.0.1", + "version": "2.1.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.ameba.SwiftBar';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.ameba.SwiftBar' AND version_compare(bundle_short_version, '2.0.1') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.ameba.SwiftBar' AND version_compare(bundle_short_version, '2.1.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.ameba.SwiftBar');" }, - "installer_url": "https://github.com/swiftbar/SwiftBar/releases/download/v2.0.1/SwiftBar.v2.0.1.b536.zip", + "installer_url": "https://github.com/swiftbar/SwiftBar/releases/download/v2.1.0/SwiftBar.v2.1.0.b594.zip", "install_script_ref": "3c4a3d83", "uninstall_script_ref": "7e858194", - "sha256": "ac70a9cbdde20d58dae27d360764aa42c3698f6e1bc4618c4b03297a2cee67fa", + "sha256": "54b425256f449dd90f8d167993cc65c3673bcd44d206e1aaf641a09fb58bc0da", "default_categories": [ "Utilities" ] diff --git a/ee/maintained-apps/outputs/teleport-connect/darwin.json b/ee/maintained-apps/outputs/teleport-connect/darwin.json index c7a28f95a31..328aade9766 100644 --- a/ee/maintained-apps/outputs/teleport-connect/darwin.json +++ b/ee/maintained-apps/outputs/teleport-connect/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "18.10.3", + "version": "18.10.4", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'gravitational.teleport.connect';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'gravitational.teleport.connect' AND version_compare(bundle_short_version, '18.10.3') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'gravitational.teleport.connect' AND version_compare(bundle_short_version, '18.10.4') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'gravitational.teleport.connect');" }, - "installer_url": "https://cdn.teleport.dev/Teleport%20Connect-18.10.3.dmg", + "installer_url": "https://cdn.teleport.dev/Teleport%20Connect-18.10.4.dmg", "install_script_ref": "91382f33", "uninstall_script_ref": "b650487b", - "sha256": "1545ac527e2b8b46fb76c3090665785e665e320eb07b3b5f82c9212c5b72ed3e", + "sha256": "153f151e777a596536331f25fd1b08457bf79b548378e6a2aefd4870df9876c6", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/teleport-connect/windows.json b/ee/maintained-apps/outputs/teleport-connect/windows.json index 361ff4ddafe..9795e54a200 100644 --- a/ee/maintained-apps/outputs/teleport-connect/windows.json +++ b/ee/maintained-apps/outputs/teleport-connect/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "18.10.3", + "version": "18.10.4", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Teleport Connect %' AND publisher = 'Gravitational, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Teleport Connect %' AND publisher = 'Gravitational, Inc.' AND version_compare(version, '18.10.3') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Teleport Connect %' AND publisher = 'Gravitational, Inc.' AND version_compare(version, '18.10.4') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'teleport connect.exe');" }, - "installer_url": "https://cdn.teleport.dev/Teleport%20Connect%20Setup-18.10.3.exe", + "installer_url": "https://cdn.teleport.dev/Teleport%20Connect%20Setup-18.10.4.exe", "install_script_ref": "5203db2b", "uninstall_script_ref": "df260b5b", - "sha256": "1ceedc11200b90be6428e51939e0fe82c57ba74f65a2d50200f7aac76ae203ac", + "sha256": "fa4f9e267e27a893d72c0f1ce4c7f39ee4578ca98dfdacf2383c0c9966d9a62f", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/teleport-suite/darwin.json b/ee/maintained-apps/outputs/teleport-suite/darwin.json index 48fbebfca88..8c344c87baa 100644 --- a/ee/maintained-apps/outputs/teleport-suite/darwin.json +++ b/ee/maintained-apps/outputs/teleport-suite/darwin.json @@ -1,23 +1,23 @@ { "versions": [ { - "version": "18.10.3", + "version": "18.10.4", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.gravitational.teleport.tsh';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.gravitational.teleport.tsh' AND version_compare(bundle_short_version, '18.10.3') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.gravitational.teleport.tsh' AND version_compare(bundle_short_version, '18.10.4') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.gravitational.teleport.tsh');" }, - "installer_url": "https://cdn.teleport.dev/teleport-18.10.3.pkg", - "install_script_ref": "e996f404", + "installer_url": "https://cdn.teleport.dev/teleport-18.10.4.pkg", + "install_script_ref": "2b57ace9", "uninstall_script_ref": "343cb8f4", - "sha256": "006d6a4e38564658cb0615a1628befc337597355ca4be3ceec33c5fd86a8f519", + "sha256": "5c33f825e2836306d715f47f74cecaacc946a98a15b8d923ba0dd9d748617327", "default_categories": [ "Developer tools" ] } ], "refs": { - "343cb8f4": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n # Convert (.*) to .* for regex matching to handle patterns like (.*).com.example.app\n local regex_pattern=$(echo \"$prefix\" | sed 's/(\\.\\*)/.*/g')\n echo \"Expanding wildcard for PKGID: $PKGID (pattern: ^${regex_pattern})\"\n for receipt in $(pkgutil --pkgs | grep -E \"^${regex_pattern}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\n\nremove_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\n# Remove teleport-suite packages (handles wildcard patterns with (.*))\nremove_pkg_files '(.*).com.gravitational.teleport.tctl'\nforget_pkg '(.*).com.gravitational.teleport.tctl'\nremove_pkg_files '(.*).com.gravitational.teleport.tsh'\nforget_pkg '(.*).com.gravitational.teleport.tsh'\nremove_pkg_files 'com.gravitational.teleport'\nforget_pkg 'com.gravitational.teleport'\n\n# Explicitly remove apps from /Applications (in case pkgutil removal didn't catch them)\nsudo rm -rf '/Applications/tctl.app'\nsudo rm -rf '/Applications/tsh.app'\n\n# Remove binaries\nsudo rm -rf '/usr/local/bin/fdpass-teleport'\nsudo rm -rf '/usr/local/bin/tbot'\nsudo rm -rf '/usr/local/bin/tctl'\nsudo rm -rf '/usr/local/bin/teleport'\nsudo rm -rf '/usr/local/bin/tsh'\n\n# Remove user data\ntrash $LOGGED_IN_USER '~/.tsh'\n\n", - "e996f404": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'com.gravitational.teleport.tsh'\nsudo installer -pkg \"$TMPDIR/teleport-18.10.3.pkg\" -target / || exit $?\nrelaunch_application 'com.gravitational.teleport.tsh'\n" + "2b57ace9": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'com.gravitational.teleport.tsh'\nsudo installer -pkg \"$TMPDIR/teleport-18.10.4.pkg\" -target / || exit $?\nrelaunch_application 'com.gravitational.teleport.tsh'\n", + "343cb8f4": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n # Convert (.*) to .* for regex matching to handle patterns like (.*).com.example.app\n local regex_pattern=$(echo \"$prefix\" | sed 's/(\\.\\*)/.*/g')\n echo \"Expanding wildcard for PKGID: $PKGID (pattern: ^${regex_pattern})\"\n for receipt in $(pkgutil --pkgs | grep -E \"^${regex_pattern}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\n\nremove_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\n# Remove teleport-suite packages (handles wildcard patterns with (.*))\nremove_pkg_files '(.*).com.gravitational.teleport.tctl'\nforget_pkg '(.*).com.gravitational.teleport.tctl'\nremove_pkg_files '(.*).com.gravitational.teleport.tsh'\nforget_pkg '(.*).com.gravitational.teleport.tsh'\nremove_pkg_files 'com.gravitational.teleport'\nforget_pkg 'com.gravitational.teleport'\n\n# Explicitly remove apps from /Applications (in case pkgutil removal didn't catch them)\nsudo rm -rf '/Applications/tctl.app'\nsudo rm -rf '/Applications/tsh.app'\n\n# Remove binaries\nsudo rm -rf '/usr/local/bin/fdpass-teleport'\nsudo rm -rf '/usr/local/bin/tbot'\nsudo rm -rf '/usr/local/bin/tctl'\nsudo rm -rf '/usr/local/bin/teleport'\nsudo rm -rf '/usr/local/bin/tsh'\n\n# Remove user data\ntrash $LOGGED_IN_USER '~/.tsh'\n\n" } } diff --git a/ee/maintained-apps/outputs/termius/windows.json b/ee/maintained-apps/outputs/termius/windows.json index 02b8fada020..7ac5a40bb11 100644 --- a/ee/maintained-apps/outputs/termius/windows.json +++ b/ee/maintained-apps/outputs/termius/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "9.42.2", + "version": "9.43.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Termius' AND publisher = 'Termius Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Termius' AND publisher = 'Termius Corporation' AND version_compare(version, '9.42.2') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Termius' AND publisher = 'Termius Corporation' AND version_compare(version, '9.43.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'termius.exe');" }, "installer_url": "https://autoupdate.termius.com/windows/Install%20Termius.exe", "install_script_ref": "df65625a", "uninstall_script_ref": "362c320f", - "sha256": "9d6fb0b32fcef989762e7c268f298ebcfb46e042920847681418e38a1a6752d0", + "sha256": "5f769089cec36c686cac6878fc08312c56fcae28f460c004bf6b05f226a24805", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/tower/darwin.json b/ee/maintained-apps/outputs/tower/darwin.json index b9dc9f5b499..380cceecc0f 100644 --- a/ee/maintained-apps/outputs/tower/darwin.json +++ b/ee/maintained-apps/outputs/tower/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "17.1", + "version": "17.1.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.fournova.Tower';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.fournova.Tower' AND version_compare(bundle_short_version, '17.1') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.fournova.Tower' AND version_compare(bundle_short_version, '17.1.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.fournova.Tower');" }, - "installer_url": "https://www.git-tower.com/apps/tower3-mac/551-751159f7/Tower-17.1-551.zip", + "installer_url": "https://www.git-tower.com/apps/tower3-mac/553-594bc90a/Tower-17.1.1-553.zip", "install_script_ref": "aa9bd839", "uninstall_script_ref": "8937b747", - "sha256": "5e13858087ee99dbb8615243aa4c27b11c343b3191baf1342ac364e3d9f3f909", + "sha256": "5ca3e07994e24418eece6cc5245ebd56da9f10fb1e3b486aff654865682070ab", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/unity-hub/darwin.json b/ee/maintained-apps/outputs/unity-hub/darwin.json index 038f1bd1c66..7743a0a7e49 100644 --- a/ee/maintained-apps/outputs/unity-hub/darwin.json +++ b/ee/maintained-apps/outputs/unity-hub/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "3.20.0", + "version": "3.20.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.unity3d.unityhub';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.unity3d.unityhub' AND version_compare(bundle_short_version, '3.20.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.unity3d.unityhub' AND version_compare(bundle_short_version, '3.20.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.unity3d.unityhub');" }, - "installer_url": "https://public-cdn.cloud.unity3d.com/hub/prod/3.20.0/UnityHubSetup-3.20.0-arm64.dmg", + "installer_url": "https://public-cdn.cloud.unity3d.com/hub/prod/3.20.1/UnityHubSetup-3.20.1-arm64.dmg", "install_script_ref": "f7867145", "uninstall_script_ref": "5b95ff58", - "sha256": "49bb701e48ac7aa02f352348fb6e0aae20f808730ee8f4c371b3c3494c6232d9", + "sha256": "1876a3d6ee431ed19f6d3b93b5b833510077a521a124478cb02a3d560bd9bc67", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/webex/windows.json b/ee/maintained-apps/outputs/webex/windows.json index bbdc975d364..ca85c70118d 100644 --- a/ee/maintained-apps/outputs/webex/windows.json +++ b/ee/maintained-apps/outputs/webex/windows.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "46.8.0.35593", + "version": "46.8.0.35631", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Cisco Webex' AND publisher = 'Cisco Systems, Inc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cisco Webex' AND publisher = 'Cisco Systems, Inc' AND version_compare(version, '46.8.0.35593') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cisco Webex' AND publisher = 'Cisco Systems, Inc' AND version_compare(version, '46.8.0.35631') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM processes WHERE LOWER(name) = 'webex.exe');" }, - "installer_url": "https://binaries.webex.com/WebexDesktop-Win-64-Gold/20260804173554/Webex.msi", + "installer_url": "https://binaries.webex.com/WebexDesktop-Win-64-Gold/20260810210716/Webex.msi", "install_script_ref": "22e48c46", "uninstall_script_ref": "9832a568", - "sha256": "9d5a42e890838c3fdf1ee679bc691ba93cd5774c86793ce7409c5dce0fd44947", + "sha256": "6874a088d36e0019d0841139d35260ad8f56a9d72419fe27001c85d88b2236cf", "default_categories": [ "Communication" ], diff --git a/ee/maintained-apps/outputs/zen/darwin.json b/ee/maintained-apps/outputs/zen/darwin.json index ae516a67042..c6d35c2fa82 100644 --- a/ee/maintained-apps/outputs/zen/darwin.json +++ b/ee/maintained-apps/outputs/zen/darwin.json @@ -1,16 +1,16 @@ { "versions": [ { - "version": "1.21.12b", + "version": "1.21.13b", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'app.zen-browser.zen';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.zen-browser.zen' AND version_compare(bundle_short_version, '1.21.12b') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.zen-browser.zen' AND version_compare(bundle_short_version, '1.21.13b') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'app.zen-browser.zen');" }, - "installer_url": "https://github.com/zen-browser/desktop/releases/download/1.21.12b/zen.macos-universal.dmg", + "installer_url": "https://github.com/zen-browser/desktop/releases/download/1.21.13b/zen.macos-universal.dmg", "install_script_ref": "67e0fe5c", "uninstall_script_ref": "6fa48a6f", - "sha256": "dba6a9674d3199ac9b1ea8753c5f08486fe91de36ff113f7339f34423ffe5ea0", + "sha256": "6ee7eb09ae3f92ef56d14340acc7948b45d76806d232a54de23a8cd348361b09", "default_categories": [ "Browsers" ] From 27760c43d59b7d91500e3f8aca561e34141437e5 Mon Sep 17 00:00:00 2001 From: Allen Houchins Date: Tue, 11 Aug 2026 08:31:07 -0500 Subject: [PATCH 2/2] Revert four macOS FMAs to last known good and freeze inputs Adobe Acrobat Pro, Cisco Jabber, Keeper Password Manager, and NVIDIA GeForce NOW all failed darwin validation with "App version was not found by osquery". Revert their outputs to the versions currently on main and set "frozen": true on the homebrew inputs so the validator skips them and the ingester stops overwriting the pinned output. --- ee/maintained-apps/inputs/homebrew/adobe-acrobat-pro.json | 3 ++- ee/maintained-apps/inputs/homebrew/cisco-jabber.json | 3 ++- .../inputs/homebrew/keeper-password-manager.json | 3 ++- ee/maintained-apps/inputs/homebrew/nvidia-geforce-now.json | 3 ++- ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json | 4 ++-- ee/maintained-apps/outputs/cisco-jabber/darwin.json | 4 ++-- .../outputs/keeper-password-manager/darwin.json | 4 ++-- ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json | 4 ++-- 8 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ee/maintained-apps/inputs/homebrew/adobe-acrobat-pro.json b/ee/maintained-apps/inputs/homebrew/adobe-acrobat-pro.json index 5099b644890..f6babbb12c6 100644 --- a/ee/maintained-apps/inputs/homebrew/adobe-acrobat-pro.json +++ b/ee/maintained-apps/inputs/homebrew/adobe-acrobat-pro.json @@ -4,5 +4,6 @@ "token": "adobe-acrobat-pro", "installer_format": "dmg", "slug": "adobe-acrobat-pro/darwin", - "default_categories": ["Productivity"] + "default_categories": ["Productivity"], + "frozen": true } diff --git a/ee/maintained-apps/inputs/homebrew/cisco-jabber.json b/ee/maintained-apps/inputs/homebrew/cisco-jabber.json index 4b39ed5fc6a..986c99797f3 100644 --- a/ee/maintained-apps/inputs/homebrew/cisco-jabber.json +++ b/ee/maintained-apps/inputs/homebrew/cisco-jabber.json @@ -4,5 +4,6 @@ "token": "cisco-jabber", "installer_format": "pkg", "slug": "cisco-jabber/darwin", - "default_categories": ["Communication"] + "default_categories": ["Communication"], + "frozen": true } diff --git a/ee/maintained-apps/inputs/homebrew/keeper-password-manager.json b/ee/maintained-apps/inputs/homebrew/keeper-password-manager.json index 8616c9d7447..ee5efdbd715 100644 --- a/ee/maintained-apps/inputs/homebrew/keeper-password-manager.json +++ b/ee/maintained-apps/inputs/homebrew/keeper-password-manager.json @@ -6,5 +6,6 @@ "slug": "keeper-password-manager/darwin", "default_categories": [ "Productivity" - ] + ], + "frozen": true } \ No newline at end of file diff --git a/ee/maintained-apps/inputs/homebrew/nvidia-geforce-now.json b/ee/maintained-apps/inputs/homebrew/nvidia-geforce-now.json index a1638aefe28..2471a11a9f5 100644 --- a/ee/maintained-apps/inputs/homebrew/nvidia-geforce-now.json +++ b/ee/maintained-apps/inputs/homebrew/nvidia-geforce-now.json @@ -6,5 +6,6 @@ "slug": "nvidia-geforce-now/darwin", "default_categories": [ "Productivity" - ] + ], + "frozen": true } \ No newline at end of file diff --git a/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json b/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json index 35656421386..ce8935be51b 100644 --- a/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json +++ b/ee/maintained-apps/outputs/adobe-acrobat-pro/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "26.001.21789", + "version": "26.001.21771", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Acrobat.Pro';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Acrobat.Pro' AND version_compare(bundle_short_version, '26.001.21789') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.adobe.Acrobat.Pro' AND version_compare(bundle_short_version, '26.001.21771') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.adobe.Acrobat.Pro');" }, "installer_url": "https://trials.adobe.com/AdobeProducts/APRO/Acrobat_HelpX/osx10/Acrobat_DC_Web_WWMUI.dmg", diff --git a/ee/maintained-apps/outputs/cisco-jabber/darwin.json b/ee/maintained-apps/outputs/cisco-jabber/darwin.json index f4119756d3e..0333e9f5830 100644 --- a/ee/maintained-apps/outputs/cisco-jabber/darwin.json +++ b/ee/maintained-apps/outputs/cisco-jabber/darwin.json @@ -7,10 +7,10 @@ "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.cisco.jabber' AND version_compare(bundle_short_version, '15.2.1') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.cisco.jabber');" }, - "installer_url": "https://binaries.webex.com/jabberclientmac/20260722023311/Install_Cisco-Jabber-Mac.pkg", + "installer_url": "https://binaries.webex.com/jabberclientmac/20260122074039/Install_Cisco-Jabber-Mac.pkg", "install_script_ref": "edbec29c", "uninstall_script_ref": "fe0e9261", - "sha256": "bb71f8686049930033710f88698712e6aee6ed469516f3a73e48df8cecda4d61", + "sha256": "5644700e420febc1eca304c0a0f24bcff1e64b424112e1beda025d2eb78e16de", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/keeper-password-manager/darwin.json b/ee/maintained-apps/outputs/keeper-password-manager/darwin.json index 81461fd32ff..bad004d6816 100644 --- a/ee/maintained-apps/outputs/keeper-password-manager/darwin.json +++ b/ee/maintained-apps/outputs/keeper-password-manager/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "18.6.0", + "version": "18.5.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager' AND version_compare(bundle_short_version, '18.6.0') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.keepersecurity.passwordmanager' AND version_compare(bundle_short_version, '18.5.0') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.keepersecurity.passwordmanager');" }, "installer_url": "https://keepersecurity.com/desktop_electron/Darwin/KeeperSetup.dmg", diff --git a/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json b/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json index dc39d27c6dc..36263097282 100644 --- a/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json +++ b/ee/maintained-apps/outputs/nvidia-geforce-now/darwin.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "2.0.87.134", + "version": "2.0.87.131", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.nvidia.gfnpc.mall';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.nvidia.gfnpc.mall' AND version_compare(bundle_short_version, '2.0.87.134') < 0);", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.nvidia.gfnpc.mall' AND version_compare(bundle_short_version, '2.0.87.131') < 0);", "open": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps a JOIN processes p ON substr(p.path, 1, LENGTH(a.path) + 1) = concat(a.path, '/') WHERE a.bundle_identifier = 'com.nvidia.gfnpc.mall');" }, "installer_url": "https://download.nvidia.com/gfnpc/GeForceNOW-release.dmg",