Add Comet as a macOS & Windows FMA - #47027
Conversation
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."
Codecov Report❌ Patch coverage is
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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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", |
| 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" |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (9)
WalkthroughThis 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
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
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:
comet.jsonmetadata files for Homebrew (macOS) and Winget (Windows) in theinputsdirectory, defining identifiers, installer types, and categories. [1] [2]apps.jsonto include Comet for bothdarwin(macOS) andwindowsplatforms with descriptive text.macOS support:
outputs/comet/darwin.jsonwith versioned app definition, install/uninstall queries, download URL, and references to install/uninstall scripts.Windows support:
outputs/comet/windows.jsonwith versioned app definition, install/uninstall queries, download URL, SHA256, and references to install/uninstall scripts.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