Skip to content

Update Fleet-maintained apps - #44337

Merged
allenhouchins merged 1 commit into
mainfrom
fma-2604282128
Apr 29, 2026
Merged

Update Fleet-maintained apps#44337
allenhouchins merged 1 commit into
mainfrom
fma-2604282128

Conversation

@fleet-release

@fleet-release fleet-release commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

  • Chores
    • Updated version metadata and installer information for maintained applications across macOS and Windows platforms. Version updates applied to Figma, Firefox, Firefox ESR, Granola, Microsoft Outlook, Notion, Ollama, Podman Desktop, PyCharm, and Warp, each with new installer URLs and verification checksums for security and integrity.

Generated automatically with cmd/maintained-apps.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

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

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

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

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

ee/maintained-apps/outputs/firefox/windows.json

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

ee/maintained-apps/outputs/firefox@esr/darwin.json

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

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

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

ee/maintained-apps/outputs/granola/windows.json

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

ee/maintained-apps/outputs/microsoft-outlook/darwin.json

=== Install // fbfafe33 -> 5039e9ab ===

--- /tmp/old.96rnks	2026-04-28 21:30:56.641086134 +0000
+++ /tmp/new.QeylCG	2026-04-28 21:30:56.642086119 +0000
@@ -117,6 +117,6 @@
 
 EOF
 
-sudo installer -pkg "$TMPDIR"/Microsoft_Outlook_16.108.26041915_Installer.pkg -target / -applyChoiceChangesXML "$CHOICE_XML"
+sudo installer -pkg "$TMPDIR"/Microsoft_Outlook_16.108.26042616_Installer.pkg -target / -applyChoiceChangesXML "$CHOICE_XML"
 
 relaunch_application 'com.microsoft.Outlook'

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

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

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

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

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

ee/maintained-apps/outputs/podman-desktop/darwin.json

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

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

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

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

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

@coderabbitai

coderabbitai Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request updates configuration metadata for twelve maintained applications across macOS and Windows platforms. Each update modifies JSON files in ee/maintained-apps/outputs/ to reflect new application versions, including version strings, SQL patch-detection thresholds, installer download URLs, and SHA256 checksums. The affected applications are Figma, Firefox, Firefox ESR, Granola, Microsoft Outlook, Notion, Ollama, Podman Desktop, PyCharm, and Warp. One update also modifies an installation script reference.

Possibly related PRs

  • fleetdm/fleet#44119: Modifies overlapping maintained-app JSON files including granola/darwin.json, ollama/darwin.json, and microsoft-outlook/darwin.json to update versions and installer metadata.
  • fleetdm/fleet#43404: Updates multiple Fleet maintained-app JSON outputs including granola/darwin.json, ollama/darwin.json, and warp/darwin.json with version bumps and installer changes.
  • fleetdm/fleet#43849: Modifies firefox/darwin.json and firefox@esr/darwin.json files to update Firefox and Firefox ESR versions and related installer metadata.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description is minimal but appropriate for an automated data ingestion PR; however, it lacks the detailed structure recommended by the repository's template. Consider adding more context about which apps were updated and the extent of changes, or confirm that minimal descriptions are acceptable for automated PRs in this repository.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: updating version metadata for multiple Fleet-maintained applications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

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

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
ee/maintained-apps/outputs/pycharm/darwin.json (2)

20-20: ⚠️ Potential issue | 🟠 Major

Uninstall script uses a relative rm -rf 'pycharm' (potentially deletes unintended paths).

The uninstall script includes:

  • sudo rm -rf 'pycharm'

This is a relative path and depends on the script’s current working directory. That can be dangerous if the execution context changes.

🛠️ Proposed fix
- sudo rm -rf 'pycharm'
+ # Remove only the intended path(s). If you meant /Applications/pycharm, use an absolute path.
+ sudo rm -rf "$APPDIR/pycharm"

If /Applications/pycharm is not the intended location, then the safest change is to remove this line entirely.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ee/maintained-apps/outputs/pycharm/darwin.json` at line 20, The script
contains a dangerous relative deletion command (sudo rm -rf 'pycharm') that can
remove unintended files depending on CWD; remove that line (or replace it with a
safe absolute path such as "$APPDIR/pycharm" only if that is the intended
target) and keep the rest of the trash() usages intact to ensure removals use
explicit user-scoped paths; reference the literal sudo rm -rf 'pycharm' in the
file and the trash() helper when making the change.

20-20: ⚠️ Potential issue | 🟠 Major

Uninstall script wildcard paths are quoted, so globs won’t expand → files won’t be removed.

In refs.ed7c065c (uninstall script), you call:

  • trash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.pc.*.plist'
  • trash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.py.*.plist'
  • trash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.pycharm.*.plist'

Because those patterns are wrapped in single quotes, the shell will not expand * before the trash() function runs. Inside trash(), the code uses [[ -e "$target_file" ]] and therefore will look for a literal filename containing *, which will almost always fail—so the uninstall likely misses these files.

Also, trash() currently only uses $2 as a single target path, so even if globs did expand to multiple matches, only the first match would be processed.

🛠️ Proposed fix: make `trash()` accept multiple expanded targets and unquote glob patterns
 "ed7c065c": "#!/bin/sh
@@
-trash() {
-  local logged_in_user=\"$1\"
-  local target_file=\"$2\"
+trash() {
+  local logged_in_user=\"$1\"
+  shift
   local timestamp=\"$(date +%Y-%m-%d-%s)\"
   local rand=\"$(jot -r 1 0 99999)\"
 
-  # replace ~ with /Users/$logged_in_user
-  if [[ \"$target_file\" == ~* ]]; then
-    target_file=\"/Users/$logged_in_user${target_file:1}\"
-  fi
-
-  local trash=\"/Users/$logged_in_user/.Trash\"
-  local file_name=\"$(basename \"${target_file}\")\"
-
-  if [[ -e \"$target_file\" ]]; then
-    echo \"removing $target_file.\"
-    mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"
-  else
-    echo \"$target_file doesn't exist.\"
-  fi
+  local trash_dir=\"/Users/$logged_in_user/.Trash\"
+  local target_file
+  for target_file in \"$@\"; do
+    # replace ~ with /Users/$logged_in_user
+    if [[ \"$target_file\" == ~* ]]; then
+      target_file=\"/Users/$logged_in_user${target_file:1}\"
+    fi
+
+    local file_name=\"$(basename \"${target_file}\")\"
+    if [[ -e \"$target_file\" ]]; then
+      echo \"removing $target_file.\"
+      mv -f \"$target_file\" \"$trash_dir/${file_name}_${timestamp}_${rand}\"
+    else
+      echo \"$target_file doesn't exist.\"
+    fi
+  done
 }
@@
-trash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.pc.*.plist'
-trash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.py.*.plist'
-trash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.pycharm.*.plist'
+trash \"$LOGGED_IN_USER\" ~/Library/Preferences/jetbrains.pc.*.plist
+trash \"$LOGGED_IN_USER\" ~/Library/Preferences/jetbrains.py.*.plist
+trash \"$LOGGED_IN_USER\" ~/Library/Preferences/jetbrains.pycharm.*.plist
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ee/maintained-apps/outputs/pycharm/darwin.json` at line 20, The uninstall
misses wildcard matches because glob patterns are passed quoted and trash() only
handles a single $2; unquote the glob arguments in the calls (e.g. use
~/Library/Preferences/jetbrains.pc.*.plist) and update trash() to accept and
iterate over multiple targets (use "$@" or loop over all args after the user
param), performing the existing tilde-expansion and existence check per target
and moving each match into the user's .Trash; keep references to LOGGED_IN_USER,
trash(), target_file, and the timestamp/rand logic when implementing the loop.
🧹 Nitpick comments (2)
ee/maintained-apps/outputs/ollama/darwin.json (1)

19-19: Potential installer fragility: it assumes the ZIP extracts Ollama.app directly to $TMPDIR/Ollama.app.

The embedded installer string unzips into "$TMPDIR" and then runs sudo cp -R "$TMPDIR/Ollama.app" "$APPDIR". If the 0.22.0 ZIP introduces a new top-level folder (e.g., Ollama-darwin/Ollama.app), installs would fail. Please confirm the archive structure during the SHA verification (same script can check unzip -l output).

If you want to harden this long-term, consider adjusting the installer script to copy the first matching Ollama.app found under $TMPDIR (e.g., with find "$TMPDIR" -name "Ollama.app" -maxdepth ... -print -quit).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ee/maintained-apps/outputs/ollama/darwin.json` at line 19, The script unzips
via unzip "$INSTALLER_PATH" -d "$TMPDIR" and then blindly copies sudo cp -R
"$TMPDIR/Ollama.app" "$APPDIR", which fails if the archive nests the .app inside
a top-level folder; modify the installer to (1) inspect the archive (unzip -l
"$INSTALLER_PATH") or after extraction use a robust discovery step (e.g., use
find "$TMPDIR" -name "Ollama.app" -print -quit) to locate the first Ollama.app
path, (2) use that discovered path for backup/move/copy instead of the fixed
"$TMPDIR/Ollama.app", and ensure quit_and_track_application and
relaunch_application still receive the bundle id 'com.electron.ollama' as
before.
ee/maintained-apps/outputs/pycharm/darwin.json (1)

19-19: Install script: quote $INSTALLER_PATH when calling realpath for correctness/robustness.

In the install script referenced by d6824d32, TMPDIR is computed as:

  • TMPDIR=$(dirname "$(realpath $INSTALLER_PATH)")

If $INSTALLER_PATH ever contains spaces or unusual characters, the unquoted $INSTALLER_PATH can break realpath argument parsing.

♻️ Proposed fix
- TMPDIR=$(dirname "$(realpath $INSTALLER_PATH)")
+ TMPDIR=$(dirname "$(realpath "$INSTALLER_PATH")")
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ee/maintained-apps/outputs/pycharm/darwin.json` at line 19, The TMPDIR
assignment uses realpath with an unquoted $INSTALLER_PATH which will break on
paths with spaces; update the TMPDIR computation (the TMPDIR variable
assignment) to quote the variable when calling realpath (i.e., use "$(realpath
\"$INSTALLER_PATH\")" or equivalent), ensuring the rest of the script (functions
quit_and_track_application and relaunch_application that rely on TMPDIR) still
work with the quoted value.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ee/maintained-apps/outputs/warp/darwin.json`:
- Around line 4-9: The installer_url path segment does not match the declared
"version" (0.2026.04.27.15.32.02) — update the "installer_url" value so its v...
path uses the identical version token (e.g., v0.2026.04.27.15.32.02/...) or
alternatively update the "version" field to include the actual release suffix
used in the URL (e.g., change version to 0.2026.04.27.15.32.stable_02) so that
"version", "queries.patched", and "installer_url" are consistent (check the
installer_url, version, and queries.patched entries).

---

Outside diff comments:
In `@ee/maintained-apps/outputs/pycharm/darwin.json`:
- Line 20: The script contains a dangerous relative deletion command (sudo rm
-rf 'pycharm') that can remove unintended files depending on CWD; remove that
line (or replace it with a safe absolute path such as "$APPDIR/pycharm" only if
that is the intended target) and keep the rest of the trash() usages intact to
ensure removals use explicit user-scoped paths; reference the literal sudo rm
-rf 'pycharm' in the file and the trash() helper when making the change.
- Line 20: The uninstall misses wildcard matches because glob patterns are
passed quoted and trash() only handles a single $2; unquote the glob arguments
in the calls (e.g. use ~/Library/Preferences/jetbrains.pc.*.plist) and update
trash() to accept and iterate over multiple targets (use "$@" or loop over all
args after the user param), performing the existing tilde-expansion and
existence check per target and moving each match into the user's .Trash; keep
references to LOGGED_IN_USER, trash(), target_file, and the timestamp/rand logic
when implementing the loop.

---

Nitpick comments:
In `@ee/maintained-apps/outputs/ollama/darwin.json`:
- Line 19: The script unzips via unzip "$INSTALLER_PATH" -d "$TMPDIR" and then
blindly copies sudo cp -R "$TMPDIR/Ollama.app" "$APPDIR", which fails if the
archive nests the .app inside a top-level folder; modify the installer to (1)
inspect the archive (unzip -l "$INSTALLER_PATH") or after extraction use a
robust discovery step (e.g., use find "$TMPDIR" -name "Ollama.app" -print -quit)
to locate the first Ollama.app path, (2) use that discovered path for
backup/move/copy instead of the fixed "$TMPDIR/Ollama.app", and ensure
quit_and_track_application and relaunch_application still receive the bundle id
'com.electron.ollama' as before.

In `@ee/maintained-apps/outputs/pycharm/darwin.json`:
- Line 19: The TMPDIR assignment uses realpath with an unquoted $INSTALLER_PATH
which will break on paths with spaces; update the TMPDIR computation (the TMPDIR
variable assignment) to quote the variable when calling realpath (i.e., use
"$(realpath \"$INSTALLER_PATH\")" or equivalent), ensuring the rest of the
script (functions quit_and_track_application and relaunch_application that rely
on TMPDIR) still work with the quoted value.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e0088bb5-7a50-4b8c-9ba7-06fc8a8b608e

📥 Commits

Reviewing files that changed from the base of the PR and between 94c9c26 and 5c6e85d.

📒 Files selected for processing (12)
  • ee/maintained-apps/outputs/figma/darwin.json
  • ee/maintained-apps/outputs/firefox/darwin.json
  • ee/maintained-apps/outputs/firefox/windows.json
  • ee/maintained-apps/outputs/firefox@esr/darwin.json
  • ee/maintained-apps/outputs/granola/darwin.json
  • ee/maintained-apps/outputs/granola/windows.json
  • ee/maintained-apps/outputs/microsoft-outlook/darwin.json
  • ee/maintained-apps/outputs/notion/darwin.json
  • ee/maintained-apps/outputs/ollama/darwin.json
  • ee/maintained-apps/outputs/podman-desktop/darwin.json
  • ee/maintained-apps/outputs/pycharm/darwin.json
  • ee/maintained-apps/outputs/warp/darwin.json

Comment on lines +4 to +9
"version": "0.2026.04.27.15.32.02",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'dev.warp.Warp-Stable';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.warp.Warp-Stable' AND version_compare(bundle_short_version, '0.2026.04.22.08.46.03') < 0);"
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.warp.Warp-Stable' AND version_compare(bundle_short_version, '0.2026.04.27.15.32.02') < 0);"
},
"installer_url": "https://releases.warp.dev/stable/v0.2026.04.22.08.46.stable_03/Warp.dmg",
"installer_url": "https://releases.warp.dev/stable/v0.2026.04.27.15.32.stable_02/Warp.dmg",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Read-only verification: find whether other maintained-app entries use the same
# "patched" semantics and how version strings map to bundle_short_version.

set -euo pipefail

# 1) Compare patterns of `queries.patched` across maintained apps.
rg -n --type=json '"patched"\s*:\s*"SELECT 1' ee/maintained-apps/outputs | head -n 50

# 2) Check Warp entries for other OS / other files (if present) to see how version/bundle_short_version is represented.
rg -n --type=json "dev\.warp\.Warp-Stable" ee/maintained-apps/outputs || true

# 3) Confirm which apps use `NOT EXISTS (...)` vs direct `SELECT ... FROM apps WHERE ...` patterns for `patched`.
rg -n --type=json '"patched"\s*:\s*".*NOT EXISTS' ee/maintained-apps/outputs | head -n 50

Repository: fleetdm/fleet

Length of output: 28421


Verify the installer URL path matches the updated version string.

The version (0.2026.04.27.15.32.02) and queries.patched threshold are correctly aligned, following the standard maintained-app pattern. However, the installer_url contains a path segment v0.2026.04.27.15.32.stable_02 where the suffix is stable_02, while the version string ends with plain .02. This mismatch could cause Fleet's installer logic to fail if it validates the downloaded artifact against the version metadata. Ensure the URL path component matches the expected version format, or update the version string to include the stable_ prefix if that is Warp's actual release identifier.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ee/maintained-apps/outputs/warp/darwin.json` around lines 4 - 9, The
installer_url path segment does not match the declared "version"
(0.2026.04.27.15.32.02) — update the "installer_url" value so its v... path uses
the identical version token (e.g., v0.2026.04.27.15.32.02/...) or alternatively
update the "version" field to include the actual release suffix used in the URL
(e.g., change version to 0.2026.04.27.15.32.stable_02) so that "version",
"queries.patched", and "installer_url" are consistent (check the installer_url,
version, and queries.patched entries).

@allenhouchins
allenhouchins merged commit ef9d932 into main Apr 29, 2026
8 checks passed
@allenhouchins
allenhouchins deleted the fma-2604282128 branch April 29, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants