diff --git a/ee/maintained-apps/outputs/chatgpt/darwin.json b/ee/maintained-apps/outputs/chatgpt/darwin.json index 5ab954b058..52125dcb1e 100644 --- a/ee/maintained-apps/outputs/chatgpt/darwin.json +++ b/ee/maintained-apps/outputs/chatgpt/darwin.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "26.715.31251", + "version": "26.715.31925", "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.715.31251') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat' AND version_compare(bundle_short_version, '26.715.31925') < 0);" }, - "installer_url": "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.715.31251.zip", + "installer_url": "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.715.31925.zip", "install_script_ref": "6872008e", - "uninstall_script_ref": "8a4a4a85", - "sha256": "1beef9950173d662fddafeccdee52a12906ed184debf3a62dd7610c1fc0ce6ef", + "uninstall_script_ref": "678e6cf0", + "sha256": "a0cded116975c71c723dc8601c07402533b5ff23881d15e52cfb6dc71413e45b", "default_categories": [ "Productivity" ] } ], "refs": { - "6872008e": "#!/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# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_and_track_application 'com.openai.chat'\nif [ -d \"$APPDIR/ChatGPT.app\" ]; then\n\tsudo mv \"$APPDIR/ChatGPT.app\" \"$TMPDIR/ChatGPT.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/ChatGPT.app\" \"$APPDIR\"\nrelaunch_application 'com.openai.chat'\n", - "8a4a4a85": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.openai.codex'\nsudo rm -rf \"$APPDIR/ChatGPT.app\"\nsudo rmdir '~/.codex'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Codex'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.openai.codex.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.openai.codex.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.openai.codex.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.openai.codex.savedState'\n" + "678e6cf0": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.openai.codex'\nsudo rm -rf \"$APPDIR/ChatGPT.app\"\nsudo rmdir '~/.codex'\ntrash $LOGGED_IN_USER '/Library/Application Support/CodexComputerUseAuthorizationPlugin'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Codex'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.openai.codex.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/Application Support/OpenAI/Codex'\ntrash $LOGGED_IN_USER '~/Library/Caches/Codex'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.openai.sky.CUAService'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.com.openai.sky.CUAService'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.openai.codex.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.openai.sky.CUAService'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/com.openai.sky.CUAService.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Logs/com.openai.codex'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.openai.codex.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.openai.sky.CUAService.cli.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.openai.sky.CUAService.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.openai.codex.savedState'\n", + "6872008e": "#!/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# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_and_track_application 'com.openai.chat'\nif [ -d \"$APPDIR/ChatGPT.app\" ]; then\n\tsudo mv \"$APPDIR/ChatGPT.app\" \"$TMPDIR/ChatGPT.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/ChatGPT.app\" \"$APPDIR\"\nrelaunch_application 'com.openai.chat'\n" } } diff --git a/ee/maintained-apps/outputs/chatwise/darwin.json b/ee/maintained-apps/outputs/chatwise/darwin.json index 602b4339ba..0d5f193197 100644 --- a/ee/maintained-apps/outputs/chatwise/darwin.json +++ b/ee/maintained-apps/outputs/chatwise/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "26.7.2", + "version": "26.7.3", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'app.chatwise';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.chatwise' AND version_compare(bundle_short_version, '26.7.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.chatwise' AND version_compare(bundle_short_version, '26.7.3') < 0);" }, - "installer_url": "https://releases.chatwise.app/26.7.2/ChatWise-26.7.2-arm64.dmg", + "installer_url": "https://releases.chatwise.app/26.7.3/ChatWise-26.7.3-arm64.dmg", "install_script_ref": "b3b382a0", "uninstall_script_ref": "da509fe4", - "sha256": "a859dbeb87ad17d90ebf6418dfc36bfd774a7cdc8541018ff9ed07c91ab99ab2", + "sha256": "285ecdf7225ad044a2d3801c70016d2521e1046134bc576c7c0befd896c8cd86", "default_categories": [ "Communication" ] diff --git a/ee/maintained-apps/outputs/clion/windows.json b/ee/maintained-apps/outputs/clion/windows.json index b940a289d5..2085212a8f 100644 --- a/ee/maintained-apps/outputs/clion/windows.json +++ b/ee/maintained-apps/outputs/clion/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.1.4", + "version": "2026.2", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'CLion %' AND publisher = 'JetBrains s.r.o.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'CLion %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '261.26222.59') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'CLion %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '262.8665.262') < 0);" }, - "installer_url": "https://download.jetbrains.com/cpp/CLion-2026.1.4.exe", + "installer_url": "https://download.jetbrains.com/cpp/CLion-2026.2.exe", "install_script_ref": "f1faeca2", "uninstall_script_ref": "7da7c7ff", - "sha256": "7f5cfcf37cbf659d70ecf5844b7d7ed32755e6f580199549ae605b936b14f83b", + "sha256": "44e86485fcd0b23804d165a02bd9a002ace860198f4a62ca2168b638e30b7637", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/clop/darwin.json b/ee/maintained-apps/outputs/clop/darwin.json index 4d1924146b..8b11db4b27 100644 --- a/ee/maintained-apps/outputs/clop/darwin.json +++ b/ee/maintained-apps/outputs/clop/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.3.0", + "version": "3.3.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.lowtechguys.Clop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.lowtechguys.Clop' AND version_compare(bundle_short_version, '3.3.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.lowtechguys.Clop' AND version_compare(bundle_short_version, '3.3.1') < 0);" }, - "installer_url": "https://files.lowtechguys.com/releases/Clop-3.3.0.dmg", + "installer_url": "https://files.lowtechguys.com/releases/Clop-3.3.1.dmg", "install_script_ref": "76fb9b1b", "uninstall_script_ref": "3712ca1f", - "sha256": "9f41fb5499bdd3957bb3f5e18b36aa05b31c2ed38f3890fcf65681c722a86f49", + "sha256": "1317f30abbd45d44d106a418944d5b2a90ac49535164f9b71864a5ce46532caf", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/codexbar/darwin.json b/ee/maintained-apps/outputs/codexbar/darwin.json index f1748ea8b5..814f3db110 100644 --- a/ee/maintained-apps/outputs/codexbar/darwin.json +++ b/ee/maintained-apps/outputs/codexbar/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.44.0", + "version": "0.45.0", "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.44.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.steipete.codexbar' AND version_compare(bundle_short_version, '0.45.0') < 0);" }, - "installer_url": "https://github.com/steipete/CodexBar/releases/download/v0.44.0/CodexBar-macos-universal-0.44.0.zip", + "installer_url": "https://github.com/steipete/CodexBar/releases/download/v0.45.0/CodexBar-macos-universal-0.45.0.zip", "install_script_ref": "aea54a4e", "uninstall_script_ref": "efcab822", - "sha256": "958c4b3fc64367d833b6e26df98d262b16384a52dcf6b8181f9b98091505671f", + "sha256": "02d884074eed1f973fcb53d0fe82906e4eb25d9b96ac33cd07be7da540ebf81f", "default_categories": [ "Utilities" ] diff --git a/ee/maintained-apps/outputs/dataflare/darwin.json b/ee/maintained-apps/outputs/dataflare/darwin.json index 84a13cfba6..a240588ed9 100644 --- a/ee/maintained-apps/outputs/dataflare/darwin.json +++ b/ee/maintained-apps/outputs/dataflare/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.1.3", + "version": "3.1.4", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'app.dataflare.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.dataflare.desktop' AND version_compare(bundle_short_version, '3.1.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.dataflare.desktop' AND version_compare(bundle_short_version, '3.1.4') < 0);" }, - "installer_url": "https://assets.dataflare.app/release/darwin/aarch64/Dataflare-3.1.3.dmg", + "installer_url": "https://assets.dataflare.app/release/darwin/aarch64/Dataflare-3.1.4.dmg", "install_script_ref": "0f765c0f", "uninstall_script_ref": "bf5b4266", - "sha256": "ab4360f5a5232b8455156b3fc630f7a7105e5e207179cd4442ab14165b13643d", + "sha256": "db893b68c327f637a55c7df7db3bfd94f95c3e563eb267eb24d9a37ff93e97b1", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/dataflare/windows.json b/ee/maintained-apps/outputs/dataflare/windows.json index 2efdc43730..479ede3c44 100644 --- a/ee/maintained-apps/outputs/dataflare/windows.json +++ b/ee/maintained-apps/outputs/dataflare/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.1.3", + "version": "3.1.4", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Dataflare' AND publisher = 'Dataflare';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Dataflare' AND publisher = 'Dataflare' AND version_compare(version, '3.1.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Dataflare' AND publisher = 'Dataflare' AND version_compare(version, '3.1.4') < 0);" }, - "installer_url": "https://assets.dataflare.app/release/windows/x86_64/Dataflare-Setup-3.1.3.exe", + "installer_url": "https://assets.dataflare.app/release/windows/x86_64/Dataflare-Setup-3.1.4.exe", "install_script_ref": "a5276316", "uninstall_script_ref": "4710d9ad", - "sha256": "d62504af3cca3c427b34d0d4480d19baa747806986a19919c9c80dbd6ec1f3b1", + "sha256": "80cadd7f44afbd70063e368d01765fa866e069dce65ae6498be303c515bac547", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/firefox@nightly/darwin.json b/ee/maintained-apps/outputs/firefox@nightly/darwin.json index d6a36fb878..4c87cc6a8e 100644 --- a/ee/maintained-apps/outputs/firefox@nightly/darwin.json +++ b/ee/maintained-apps/outputs/firefox@nightly/darwin.json @@ -4,12 +4,12 @@ "version": "154.0a1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.nightly';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.nightly' AND version_compare(bundle_version, '15426.7.17') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.nightly' AND version_compare(bundle_version, '15426.7.18') < 0);" }, - "installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-17-16-12-34-mozilla-central/firefox-154.0a1.en-US.mac.dmg", + "installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-18-09-07-21-mozilla-central/firefox-154.0a1.en-US.mac.dmg", "install_script_ref": "418c9331", "uninstall_script_ref": "d7c711ad", - "sha256": "2d9fee7a3abfe7397f03baabf97c6fdc0e60cd9d65d2fc214f1ad287be7b6e4c", + "sha256": "581f5f3525f8645c6d153c4ce3195bf1dbcf40c0d6e12d9a9fcac31587162bce", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/firefox@nightly/windows.json b/ee/maintained-apps/outputs/firefox@nightly/windows.json index 801cb38a95..5abbbf2118 100644 --- a/ee/maintained-apps/outputs/firefox@nightly/windows.json +++ b/ee/maintained-apps/outputs/firefox@nightly/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "154.2607.1709.0", + "version": "154.2607.1809.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Firefox Nightly' AND publisher = 'Mozilla Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Firefox Nightly' AND publisher = 'Mozilla Corporation' AND version_compare(version, '154.2607.1709.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Firefox Nightly' AND publisher = 'Mozilla Corporation' AND version_compare(version, '154.2607.1809.0') < 0);" }, - "installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-17-09-27-13-mozilla-central/firefox-154.0a1.multi.win64.installer.msix", + "installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-18-09-07-21-mozilla-central/firefox-154.0a1.multi.win64.installer.msix", "install_script_ref": "255e7c51", "uninstall_script_ref": "f0d0fed1", - "sha256": "b9f11a4edf2929d08c179ea9fc86ccd57a7b7b0b111c3d9742dfb2629a8c6cea", + "sha256": "b60d98f0b8e9bf9531bccae9df9ef3f289cc423b60bfe33d3099e77746e15eed", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/kitty/darwin.json b/ee/maintained-apps/outputs/kitty/darwin.json index 328386acc7..d39eebb2c0 100644 --- a/ee/maintained-apps/outputs/kitty/darwin.json +++ b/ee/maintained-apps/outputs/kitty/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "0.47.4", + "version": "0.48.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'net.kovidgoyal.kitty';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.kovidgoyal.kitty' AND version_compare(bundle_short_version, '0.47.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.kovidgoyal.kitty' AND version_compare(bundle_short_version, '0.48.0') < 0);" }, - "installer_url": "https://github.com/kovidgoyal/kitty/releases/download/v0.47.4/kitty-0.47.4.dmg", + "installer_url": "https://github.com/kovidgoyal/kitty/releases/download/v0.48.0/kitty-0.48.0.dmg", "install_script_ref": "113bbbcb", "uninstall_script_ref": "610c592a", - "sha256": "b53b9b18a27d53ad44a25dd6776fde8c47487b4e103ac50d682af1ee8e7b77ed", + "sha256": "ed8f4297a84c967e14040865ead2e24e768d67dd4f6fd0bb384a1073ca1e74b7", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/masscode/darwin.json b/ee/maintained-apps/outputs/masscode/darwin.json index 4801fd7b59..eb91b5d991 100644 --- a/ee/maintained-apps/outputs/masscode/darwin.json +++ b/ee/maintained-apps/outputs/masscode/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "5.9.0", + "version": "5.9.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'io.masscode.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.masscode.app' AND version_compare(bundle_short_version, '5.9.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.masscode.app' AND version_compare(bundle_short_version, '5.9.1') < 0);" }, - "installer_url": "https://github.com/massCodeIO/massCode/releases/download/v5.9.0/massCode-5.9.0-arm64.dmg", + "installer_url": "https://github.com/massCodeIO/massCode/releases/download/v5.9.1/massCode-5.9.1-arm64.dmg", "install_script_ref": "0a664ca4", "uninstall_script_ref": "02f458b9", - "sha256": "ed6dc3f2b6ed243f126b79d9a104534dc45771b1bceedbd4dbd6fd8e01c09c45", + "sha256": "c3c434d8283c76e35d35fa99752d08bf8938d8cdc88ff2a43f510fa1627c64e0", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/microsoft-edge/windows.json b/ee/maintained-apps/outputs/microsoft-edge/windows.json index 51d6b2e4a0..7757fd4b96 100644 --- a/ee/maintained-apps/outputs/microsoft-edge/windows.json +++ b/ee/maintained-apps/outputs/microsoft-edge/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "150.0.4078.65", + "version": "150.0.4078.83", "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, '150.0.4078.65') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Edge' AND publisher = 'Microsoft Corporation' AND version_compare(version, '150.0.4078.83') < 0);" }, - "installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/0870b5f5-cf08-4f24-8383-f362a669fcd8/MicrosoftEdgeEnterpriseX64.msi", + "installer_url": "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/7110b41a-d8a5-4d46-8a7b-61cd2829f1d3/MicrosoftEdgeEnterpriseX64.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "e12e9902", - "sha256": "037340dc31dc0d2dd6c0d7e7627064b3f34b03656d37a7cab499f4e8a1697882", + "sha256": "1eff2543ff905276bf16b3c2b508ffa97ed52e7b96f122c310c1ff5d42238ec1", "default_categories": [ "Browsers" ], diff --git a/ee/maintained-apps/outputs/microsoft-outlook/darwin.json b/ee/maintained-apps/outputs/microsoft-outlook/darwin.json index 8aabb981a7..785e9f7bdd 100644 --- a/ee/maintained-apps/outputs/microsoft-outlook/darwin.json +++ b/ee/maintained-apps/outputs/microsoft-outlook/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "16.109.3", + "version": "16.111", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Outlook';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Outlook' AND version_compare(bundle_short_version, '16.109.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Outlook' AND version_compare(bundle_short_version, '16.111') < 0);" }, - "installer_url": "https://res.public.onecdn.static.microsoft/mro1cdnstorage/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Outlook_16.109.26053122_Installer.pkg", - "install_script_ref": "6372af77", + "installer_url": "https://res.public.onecdn.static.microsoft/mro1cdnstorage/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Outlook_16.111.26071325_Installer.pkg", + "install_script_ref": "1fb85dbd", "uninstall_script_ref": "0aa6f641", - "sha256": "1c95d6c9b8310a97f0d13f612bd2ce94c0ec546abab0d978aed12cb6d3dfbe12", + "sha256": "16207f42ed65c4aa74e17647e9a8dd09f3586f58a3b82fcafd466acd95c47a4e", "default_categories": [ "Developer tools" ] @@ -17,6 +17,6 @@ ], "refs": { "0aa6f641": "#!/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.microsoft.office.licensingV2.helper'\nquit_application 'com.microsoft.autoupdate2'\nremove_pkg_files 'com.microsoft.package.Microsoft_Outlook.app'\nforget_pkg 'com.microsoft.package.Microsoft_Outlook.app'\nremove_pkg_files 'com.microsoft.pkg.licensing'\nforget_pkg 'com.microsoft.pkg.licensing'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.microsoft.Outlook'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.microsoft.Outlook'\n", - "6372af77": "#!/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.microsoft.Outlook'\n\nCHOICE_XML=$(mktemp /tmp/choice_xml_XXX)\n\ncat << EOF > \"$CHOICE_XML\"\n\n\n\n\n \n attributeSetting\n 0\n choiceAttribute\n selected\n choiceIdentifier\n com.microsoft.autoupdate\n \n\n\n\nEOF\n\nsudo installer -pkg \"$TMPDIR\"/Microsoft_Outlook_16.109.26053122_Installer.pkg -target / -applyChoiceChangesXML \"$CHOICE_XML\"\n\nrelaunch_application 'com.microsoft.Outlook'\n" + "1fb85dbd": "#!/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.microsoft.Outlook'\n\nCHOICE_XML=$(mktemp /tmp/choice_xml_XXX)\n\ncat << EOF > \"$CHOICE_XML\"\n\n\n\n\n \n attributeSetting\n 0\n choiceAttribute\n selected\n choiceIdentifier\n com.microsoft.autoupdate\n \n\n\n\nEOF\n\nsudo installer -pkg \"$TMPDIR\"/Microsoft_Outlook_16.111.26071325_Installer.pkg -target / -applyChoiceChangesXML \"$CHOICE_XML\"\n\nrelaunch_application 'com.microsoft.Outlook'\n" } } diff --git a/ee/maintained-apps/outputs/netron/darwin.json b/ee/maintained-apps/outputs/netron/darwin.json index 7a21876f6c..d8100b7e19 100644 --- a/ee/maintained-apps/outputs/netron/darwin.json +++ b/ee/maintained-apps/outputs/netron/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "9.1.7", + "version": "9.1.8", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.lutzroeder.netron';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.lutzroeder.netron' AND version_compare(bundle_short_version, '9.1.7') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.lutzroeder.netron' AND version_compare(bundle_short_version, '9.1.8') < 0);" }, - "installer_url": "https://github.com/lutzroeder/netron/releases/download/v9.1.7/Netron-9.1.7-mac.zip", + "installer_url": "https://github.com/lutzroeder/netron/releases/download/v9.1.8/Netron-9.1.8-mac.zip", "install_script_ref": "4929401f", "uninstall_script_ref": "acbbb0d7", - "sha256": "38cd4ba8c79ff82a2251accff4d65853b7c831044e9a1b8db90402a3d76e99b4", + "sha256": "3a1473b25e98343c0a4065608d387efa921f2952e901ce39801f8f1786491451", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/pika/darwin.json b/ee/maintained-apps/outputs/pika/darwin.json index edd40f512c..e236f1397e 100644 --- a/ee/maintained-apps/outputs/pika/darwin.json +++ b/ee/maintained-apps/outputs/pika/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.7.0", + "version": "1.8.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.superhighfives.Pika';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.superhighfives.Pika' AND version_compare(bundle_short_version, '1.7.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.superhighfives.Pika' AND version_compare(bundle_short_version, '1.8.0') < 0);" }, - "installer_url": "https://github.com/superhighfives/pika/releases/download/1.7.0/Pika-1.7.0.dmg", + "installer_url": "https://github.com/superhighfives/pika/releases/download/1.8.0/Pika-1.8.0.dmg", "install_script_ref": "9feeb59d", "uninstall_script_ref": "dc2748e7", - "sha256": "2d6372c676d5cd5c4bc6600eee12a8cf090e25d7d7f805c381f6ba247f307571", + "sha256": "dab57a153ac06b2fe3c5c6b28e435bd3e1d1fd55e4635628a7128817e26f44ee", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/reaper/darwin.json b/ee/maintained-apps/outputs/reaper/darwin.json index cb4c06ab98..fc88e019c8 100644 --- a/ee/maintained-apps/outputs/reaper/darwin.json +++ b/ee/maintained-apps/outputs/reaper/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "7.77", + "version": "7.78", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.cockos.reaper';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.cockos.reaper' AND version_compare(bundle_short_version, '7.77') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.cockos.reaper' AND version_compare(bundle_short_version, '7.78') < 0);" }, - "installer_url": "https://dlcf.reaper.fm/7.x/reaper777_universal.dmg", + "installer_url": "https://dlcf.reaper.fm/7.x/reaper778_universal.dmg", "install_script_ref": "812a1a26", "uninstall_script_ref": "544a54e5", - "sha256": "7a16ad199b4a41643cd73f8fe60289afb112574f4f8d2e3a8e44ddb0384fea9e", + "sha256": "67b1fce5b708a18f6d5c6b8e6e88775f9e21650003d8b3cac4b19767512d7d01", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/reaper/windows.json b/ee/maintained-apps/outputs/reaper/windows.json index 93cbdca110..ad1e035c0d 100644 --- a/ee/maintained-apps/outputs/reaper/windows.json +++ b/ee/maintained-apps/outputs/reaper/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "7.77", + "version": "7.78", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'REAPER' AND publisher = 'Cockos Incorporated';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'REAPER' AND publisher = 'Cockos Incorporated' AND version_compare(version, '7.77') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'REAPER' AND publisher = 'Cockos Incorporated' AND version_compare(version, '7.78') < 0);" }, - "installer_url": "https://www.reaper.fm/files/7.x/reaper777_x64-install.exe", + "installer_url": "https://www.reaper.fm/files/7.x/reaper778_x64-install.exe", "install_script_ref": "8fd3787f", "uninstall_script_ref": "c67e0453", - "sha256": "e94f7d831ac8748651619dc5982418bb28b3de60033075081e115df452010caa", + "sha256": "e7ad77bdd572c35d205034f871181c7b4d9a4110798131b60acd54cd44453947", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/super-productivity/darwin.json b/ee/maintained-apps/outputs/super-productivity/darwin.json index 91965d0ee8..5da3c42970 100644 --- a/ee/maintained-apps/outputs/super-productivity/darwin.json +++ b/ee/maintained-apps/outputs/super-productivity/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "18.14.0", + "version": "18.15.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.super-productivity.app';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.super-productivity.app' AND version_compare(bundle_short_version, '18.14.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.super-productivity.app' AND version_compare(bundle_short_version, '18.15.1') < 0);" }, - "installer_url": "https://github.com/super-productivity/super-productivity/releases/download/v18.14.0/superProductivity-arm64.dmg", + "installer_url": "https://github.com/super-productivity/super-productivity/releases/download/v18.15.1/superProductivity-arm64.dmg", "install_script_ref": "149e0795", "uninstall_script_ref": "98941c96", - "sha256": "3fab5cd07a00d5edab1ae9c10e121e85114cadbbe4310010ed6f730ee12e6798", + "sha256": "0e7382260d0afba7bcb557038ee750270122d201756337bcec9081d701076591", "default_categories": [ "Productivity" ]