Skip to content

Add Comet as a macOS & Windows FMA - #47027

Merged
allenhouchins merged 2 commits into
mainfrom
allenhouchins-comet-fma
Jun 7, 2026
Merged

Add Comet as a macOS & Windows FMA#47027
allenhouchins merged 2 commits into
mainfrom
allenhouchins-comet-fma

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jun 7, 2026

Copy link
Copy Markdown
Member

This pull request adds support for the Comet browser (an AI-integrated browser from Perplexity) to the maintained apps catalog for both macOS and Windows. It introduces metadata, installation, and uninstallation scripts, as well as versioned definitions for both platforms.

New application support: Comet browser

Metadata and catalog integration:

  • Added comet.json metadata files for Homebrew (macOS) and Winget (Windows) in the inputs directory, defining identifiers, installer types, and categories. [1] [2]
  • Updated apps.json to include Comet for both darwin (macOS) and windows platforms with descriptive text.

macOS support:

  • Added outputs/comet/darwin.json with versioned app definition, install/uninstall queries, download URL, and references to install/uninstall scripts.

Windows support:

  • Added outputs/comet/windows.json with versioned app definition, install/uninstall queries, download URL, SHA256, and references to install/uninstall scripts.
  • Added PowerShell scripts for silent installation (comet_install.ps1) and uninstallation (comet_uninstall.ps1) of Comet, handling machine-wide deployment and proper exit codes. [1] [2]

Summary by CodeRabbit

Release Notes

  • New Features
    • Added support for Comet browser on macOS and Windows with integrated installer and uninstaller functionality.
    • Added Comet browser icon to the application interface.
    • Integrated Comet with Homebrew and winget package managers.

Register the Comet browser in maintained-apps for both macOS and Windows. Adds input manifests (homebrew dmg and winget) and winget install/uninstall PowerShell scripts, plus output metadata for darwin (v145.2.7632.4581) and windows (v148.0.7778.1018) including installer URLs, script refs and sha256 for Windows. Updates ee/maintained-apps/outputs/apps.json to include Comet entries, adds a React SVG icon component and updates the icons index, and includes the 60x60 PNG app asset. Default category set to "Browsers."
fleet-release
fleet-release previously approved these changes Jun 7, 2026
@codecov

codecov Bot commented Jun 7, 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.04%. Comparing base (e36ae71) to head (ac34154).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...tend/pages/SoftwarePage/components/icons/Comet.tsx 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #47027      +/-   ##
==========================================
- Coverage   67.04%   67.04%   -0.01%     
==========================================
  Files        2874     2875       +1     
  Lines      225131   225133       +2     
  Branches    11637    11637              
==========================================
+ Hits       150931   150932       +1     
- Misses      60529    60530       +1     
  Partials    13671    13671              
Flag Coverage Δ
frontend 56.97% <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 June 7, 2026 04:34
@allenhouchins
allenhouchins requested a review from a team as a code owner June 7, 2026 04:34
Copilot AI review requested due to automatic review settings June 7, 2026 04:34
@fleet-release
fleet-release requested a review from eashaw June 7, 2026 04:34

@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.

@allenhouchins
allenhouchins merged commit fbabd07 into main Jun 7, 2026
30 of 31 checks passed
@allenhouchins
allenhouchins deleted the allenhouchins-comet-fma branch June 7, 2026 04:34

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

Adds Comet (Perplexity’s browser) to Fleet’s maintained apps catalog for macOS (Homebrew) and Windows (winget), including catalog metadata, install/uninstall scripts, versioned output manifests, and a UI icon mapping for Software.

Changes:

  • Added Comet maintained-app input metadata (Homebrew + winget) and Windows PowerShell install/uninstall scripts.
  • Added generated maintained-app output manifests for Comet on macOS and Windows, and registered Comet in the apps catalog list.
  • Added a Comet icon component and wired it into the software name → icon map in the frontend.

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers Comet in the software icon map.
frontend/pages/SoftwarePage/components/icons/Comet.tsx Adds Comet icon asset/component.
ee/maintained-apps/outputs/comet/windows.json Adds Windows maintained-app output manifest + embedded scripts for Comet.
ee/maintained-apps/outputs/comet/darwin.json Adds macOS maintained-app output manifest + embedded scripts for Comet.
ee/maintained-apps/outputs/apps.json Adds Comet entries to the generated maintained apps catalog list.
ee/maintained-apps/inputs/winget/scripts/comet_uninstall.ps1 Adds Comet uninstall script for Windows.
ee/maintained-apps/inputs/winget/scripts/comet_install.ps1 Adds Comet install script for Windows.
ee/maintained-apps/inputs/winget/comet.json Adds Comet winget input metadata (IDs, publisher, scripts, scope).
ee/maintained-apps/inputs/homebrew/comet.json Adds Comet Homebrew input metadata (token, bundle id, format).

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

"installer_url": "https://www.perplexity.ai/rest/browser/download?platform=win_x64&channel=stable",
"install_script_ref": "9f163ee3",
"uninstall_script_ref": "faa38912",
"sha256": "3d85ad9e2be15a1258d88e0b280a27131a2f2ca7b01e2f24e40bda5bc600d537",
Comment on lines +33 to +37
foreach ($key in $uninstallKeys) {
# If needed, add -notlike to the comparison to exclude certain similar
# software
if ($key.DisplayName -like $softwareNameLike) {
$foundUninstaller = $true
],
"refs": {
"9f163ee3": "# Learn more about .exe install scripts:\n# http://fleetdm.com/learn-more-about/exe-install-scripts\n#\n# Comet ships a Chromium/Omaha-based machine-scope installer\n# (comet_*_system.exe). Fleet runs as SYSTEM, so it installs machine-wide.\n\n$exeFilePath = \"${env:INSTALLER_PATH}\"\n\ntry {\n\n# Add arguments to install silently machine-wide.\n# --install --silent -> silent machine-scope install\n$processOptions = @{\n FilePath = \"$exeFilePath\"\n ArgumentList = \"--install --silent\"\n PassThru = $true\n Wait = $true\n}\n\n# Start process and track exit code\n$process = Start-Process @processOptions\n$exitCode = $process.ExitCode\n\n# Prints the exit code\nWrite-Host \"Install exit code: $exitCode\"\nExit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"faa38912": "# Fleet extracts name from installer (EXE) and saves it to PACKAGE_ID\n# variable\n$softwareName = \"Comet\"\n\n# It is recommended to use exact software name here if possible to avoid\n# uninstalling unintended software.\n$softwareNameLike = \"*$softwareName*\"\n\n# Comet uses a Chromium/Omaha uninstaller. Its UninstallString already\n# contains \"--uninstall --system-level\"; \"--force-uninstall\" runs it silently\n# without a confirmation prompt.\n$uninstallArgs = \"--force-uninstall\"\n\n# Comet installs machine-wide, so look in the per-machine uninstall keys.\n$machineKey = `\n 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*'\n$machineKey32on64 = `\n 'HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*'\n\n# Define acceptable/expected exit codes (19 = uninstall requires reboot)\n$ExpectedExitCodes = @(0, 19)\n\n$exitCode = 0\n\ntry {\n\n[array]$uninstallKeys = Get-ChildItem `\n -Path @($machineKey, $machineKey32on64) `\n -ErrorAction SilentlyContinue |\n ForEach-Object { Get-ItemProperty $_.PSPath }\n\n$foundUninstaller = $false\nforeach ($key in $uninstallKeys) {\n # If needed, add -notlike to the comparison to exclude certain similar\n # software\n if ($key.DisplayName -like $softwareNameLike) {\n $foundUninstaller = $true\n # Get the uninstall command. Some uninstallers do not include\n # 'QuietUninstallString' and require a flag to run silently.\n $uninstallCommand = if ($key.QuietUninstallString) {\n $key.QuietUninstallString\n } else {\n $key.UninstallString\n }\n\n # The uninstall command may contain command and args, like:\n # \"C:\\Program Files\\Software\\uninstall.exe\" --uninstall --silent\n # Split the command and args\n $splitArgs = $uninstallCommand.Split('\"')\n if ($splitArgs.Length -gt 1) {\n if ($splitArgs.Length -eq 3) {\n $uninstallArgs = \"$( $splitArgs[2] ) $uninstallArgs\".Trim()\n } elseif ($splitArgs.Length -gt 3) {\n Throw `\n \"Uninstall command contains multiple quoted strings. \" +\n \"Please update the uninstall script.`n\" +\n \"Uninstall command: $uninstallCommand\"\n }\n $uninstallCommand = $splitArgs[1]\n }\n Write-Host \"Uninstall command: $uninstallCommand\"\n Write-Host \"Uninstall args: $uninstallArgs\"\n\n $processOptions = @{\n FilePath = $uninstallCommand\n PassThru = $true\n Wait = $true\n }\n if ($uninstallArgs -ne '') {\n $processOptions.ArgumentList = \"$uninstallArgs\"\n }\n\n # Start process and track exit code\n $process = Start-Process @processOptions\n $exitCode = $process.ExitCode\n\n # Prints the exit code\n Write-Host \"Uninstall exit code: $exitCode\"\n # Exit the loop once the software is found and uninstalled.\n break\n }\n}\n\nif (-not $foundUninstaller) {\n Write-Host \"Uninstaller for '$softwareName' not found.\"\n # Change exit code to 0 if you don't want to fail if uninstaller is not\n # found. This could happen if program was already uninstalled.\n $exitCode = 1\n}\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n}\n\n# Treat acceptable exit codes as success\nif ($ExpectedExitCodes -contains $exitCode) {\n Exit 0\n} else {\n Exit $exitCode\n}\n"
@coderabbitai

coderabbitai Bot commented Jun 7, 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: f32d4258-4c70-495d-8b08-fc9e862d47df

📥 Commits

Reviewing files that changed from the base of the PR and between 0611cdb and ac34154.

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

Walkthrough

This PR adds support for the Comet browser application to Fleet's maintained apps infrastructure. It introduces input configuration manifests for macOS/Homebrew and Windows/winget platforms, Windows PowerShell installation and uninstallation scripts with registry-based uninstaller discovery and exit code handling, generates a registry entry in apps.json, creates platform-specific output manifests with embedded installation scripts for both macOS and Windows, and adds a new React icon component with integration into the frontend software icon lookup.

Possibly related PRs

  • fleetdm/fleet#46250: Extends the SOFTWARE_NAME_TO_ICON_MAP in the same frontend icon infrastructure to register a new app icon mapping.
  • fleetdm/fleet#46426: Updates SOFTWARE_NAME_TO_ICON_MAP and adds separate per-app manifest and script files under ee/maintained-apps/.
  • fleetdm/fleet#46847: Modifies SOFTWARE_NAME_TO_ICON_MAP in the same frontend component by extending it with a new app icon entry.
✨ 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 allenhouchins-comet-fma

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.

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