Skip to content

Add Mozilla VPN as a macOS and Windows FMA - #49284

Merged
allenhouchins merged 1 commit into
mainfrom
49149-fleet-maintained-app-requests-firefox-variants-and-mozilla-vpn
Jul 14, 2026
Merged

Add Mozilla VPN as a macOS and Windows FMA#49284
allenhouchins merged 1 commit into
mainfrom
49149-fleet-maintained-app-requests-firefox-variants-and-mozilla-vpn

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jul 14, 2026

Copy link
Copy Markdown
Member

Related issue: Resolves #49149

Adds Mozilla VPN as a Fleet-maintained app for both macOS (Homebrew cask mozilla-vpn) and Windows (winget Mozilla.VPN), version 2.38.0.

Identity fields verified against the real installers (not catalog metadata):

macOS Windows
unique_identifier org.mozilla.macos.FirefoxVPN (CFBundleIdentifier from pkg PackageInfo) Mozilla VPN (MSI ProductName)
Publisher Mozilla Corporation (MSI Manufacturer = winget locale, no override needed)
Format/type pkg msi (winget wix, machine scope, ALLUSERS=1)
  • Install/uninstall scripts auto-generated (machine-scope MSI + cask artifacts/zap) — no custom scripts.
  • Generated SHAs match the manifests (macOS 2803d4b4…, Windows 11a270b3…).
  • No bootstrapper (ARPSYSTEMCOMPONENT absent); pinned installer URLs; no risk flags.
  • On Windows, osquery reports programs.version as 2.38.0.0 vs the FMA's 2.38.0; version_compare treats a fresh install as ≥ target, so the patch policy reports patched correctly.
  • New app icon generated (MozillaVpn.tsx, website PNG, index.ts map key "mozilla vpn" shared by both platforms).

Checklist for submitter

  • QA'd all new/changed functionality manually

Summary by CodeRabbit

  • New Features
    • Added Mozilla VPN to the software catalog for macOS and Windows.
    • Added installation and uninstallation support for Mozilla VPN version 2.38.0.
    • Added Mozilla VPN’s branded icon to the software interface.
    • Included security categorization and platform-specific package details.

@allenhouchins allenhouchins linked an issue Jul 14, 2026 that may be closed by this pull request
@codecov

codecov Bot commented Jul 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 67.97%. Comparing base (0e917c2) to head (b5d1c8e).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...pages/SoftwarePage/components/icons/MozillaVpn.tsx 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #49284      +/-   ##
==========================================
- Coverage   67.97%   67.97%   -0.01%     
==========================================
  Files        3801     3802       +1     
  Lines      239970   239972       +2     
  Branches    12809    12657     -152     
==========================================
+ Hits       163128   163129       +1     
- Misses      62058    62059       +1     
  Partials    14784    14784              
Flag Coverage Δ
frontend 59.39% <50.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@allenhouchins
allenhouchins marked this pull request as ready for review July 14, 2026 18:58
@allenhouchins
allenhouchins requested a review from a team as a code owner July 14, 2026 18:58
Copilot AI review requested due to automatic review settings July 14, 2026 18:58
@fleet-release
fleet-release requested a review from eashaw July 14, 2026 18:58
@allenhouchins
allenhouchins merged commit 1a81e35 into main Jul 14, 2026
31 checks passed
@allenhouchins
allenhouchins deleted the 49149-fleet-maintained-app-requests-firefox-variants-and-mozilla-vpn branch July 14, 2026 18:58
Copilot stopped reviewing on behalf of allenhouchins due to an error July 14, 2026 18:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds Mozilla VPN to the maintained apps catalog and UI icon set so it can be detected/managed on macOS and Windows and displayed with the correct icon.

Changes:

  • Added a new MozillaVpn icon component and wired it into the software-name-to-icon map.
  • Added maintained-app definitions for Mozilla VPN (darwin/windows) including install/uninstall scripts and version detection queries.
  • Registered Mozilla VPN entries in the aggregated apps.json output and added source input descriptors (Homebrew/Winget).

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers the Mozilla VPN icon and maps the software name to the new icon component
frontend/pages/SoftwarePage/components/icons/MozillaVpn.tsx Adds the Mozilla VPN icon component
ee/maintained-apps/outputs/mozilla-vpn/windows.json Defines Windows detection queries, installer metadata, and scripts for Mozilla VPN
ee/maintained-apps/outputs/mozilla-vpn/darwin.json Defines macOS detection queries, installer metadata, and scripts for Mozilla VPN
ee/maintained-apps/outputs/apps.json Adds Mozilla VPN entries to the generated maintained apps catalog
ee/maintained-apps/inputs/winget/mozilla-vpn.json Adds Winget input metadata for Mozilla VPN on Windows
ee/maintained-apps/inputs/homebrew/mozilla-vpn.json Adds Homebrew input metadata for Mozilla VPN on macOS

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +6 to +10
<svg xmlns="http://www.w3.org/2000/svg" width={32} height={32} {...props}>
<image
width={32}
height={32}
href="data:image/png;base64,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"
Comment on lines +5 to +7
const MozillaVpn = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" width={32} height={32} {...props}>
<image
],
"refs": {
"500bade7": "# 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('{ABD1AA2B-11D7-4C4D-85EE-CC987D82A443}')) {\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",
"8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\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\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n"
Comment on lines +6 to +8
"exists": "SELECT 1 FROM programs WHERE name = 'Mozilla VPN' AND publisher = 'Mozilla Corporation';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Mozilla VPN' AND publisher = 'Mozilla Corporation' AND version_compare(version, '2.38.0') < 0);"
},
Comment on lines +6 to +8
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.macos.FirefoxVPN';",
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.macos.FirefoxVPN' AND version_compare(bundle_short_version, '2.38.0') < 0);"
},
@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d2b982cb-a765-42d6-8827-35ede68842cd

📥 Commits

Reviewing files that changed from the base of the PR and between f5e63a3 and b5d1c8e.

⛔ Files ignored due to path filters (1)
  • website/assets/images/app-icon-mozilla-vpn-60x60@2x.png is excluded by !**/*.png
📒 Files selected for processing (7)
  • ee/maintained-apps/inputs/homebrew/mozilla-vpn.json
  • ee/maintained-apps/inputs/winget/mozilla-vpn.json
  • ee/maintained-apps/outputs/apps.json
  • ee/maintained-apps/outputs/mozilla-vpn/darwin.json
  • ee/maintained-apps/outputs/mozilla-vpn/windows.json
  • frontend/pages/SoftwarePage/components/icons/MozillaVpn.tsx
  • frontend/pages/SoftwarePage/components/icons/index.ts

Walkthrough

Added Mozilla VPN as a maintained macOS and Windows application with Homebrew and Winget metadata, version 2.38.0 platform manifests, detection rules, installer details, and install/uninstall scripts. Added a Mozilla VPN icon component and registered it in the Software page icon map.

Possibly related PRs

  • fleetdm/fleet#49186: Updates the shared Software page icon mapping with additional software entries.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 49149-fleet-maintained-app-requests-firefox-variants-and-mozilla-vpn

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.

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.

Fleet-maintained app requests: Firefox variants and Mozilla VPN

3 participants