Updated formatting and links for CrowdStrike installation instructions,
ensuring consistency in naming and image references.
---------
Co-authored-by: Ian Littman <iansltx@gmail.com>
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#35495
- Updates `generate-gitops` to export android app configurations in
relative files
- Updates backend to set the android app configurations state to what
yaml files specify
- If an existing configuration was not included, it will be set to `{}`
# Checklist for submitter
## Testing
- [x] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [x] QA'd all new/changed functionality manually
- Updating feature prioritization criteria
- Use `P-` labels for high-priority customer requests
- Remove 💝 Customer requests (prioritized) project: From a Product
Design perspective, I think we get little to no value from maintaining
that project.
- @noahtalerman: I'm also going to delete the `~customer request` label.
That's the label we used to put issues on this project.
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Related to #34704(no subtask created though)
Overall changelog for the issue covers this
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
## Testing
- [ ] QA'd all new/changed functionality manually
## Database migrations
- [ ] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [ ] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ ] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
This pull request adds support for managing Adobe DNG Converter on
macOS. The main changes include introducing metadata and
installation/uninstallation scripts for this application, updating the
app registry, and improving version detection logic to handle Adobe’s
unique versioning format.
**Support for Adobe DNG Converter:**
* Added a new input definition for Adobe DNG Converter in
`homebrew/adobe-dng-converter.json`, specifying its identifiers,
installer format, and default category.
* Generated an output manifest in
`outputs/adobe-dng-converter/darwin.json` with version info, download
URL, SHA256, and detailed install/uninstall scripts for managing the app
lifecycle.
* Registered Adobe DNG Converter in the main `apps.json` registry,
including a description, unique identifier, and platform.
**Improvements to version detection:**
* Updated the `appExists` function in `darwin.go` to correctly detect
Adobe DNG Converter even when the installed version string includes a
build number in parentheses, improving reliability of version checks.
Resolves#37104
## Testing
- [X] Added/updated automated tests
- [X] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [ ] QA'd all new/changed functionality manually
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Label validation now enforces team-context constraints for policies,
queries, and MDM profiles.
* Global policies now verify label validity before creation.
* **Bug Fixes**
* Improved label association verification in team-specific
configurations.
* **Tests**
* Added comprehensive test coverage for team label associations,
including label scoping validation and team deletion scenarios.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ian Littman <iansltx@gmail.com>
### Summary
This PR adds support for `.zip` files as Windows Fleet Managed Apps
(FMAs). Zip files on Windows are treated similarly to `.exe` files and
require custom install/uninstall scripts, typically used for AppX/MSIX
packages that are distributed as zip archives.
### Changes
**Backend:**
- Added `.zip` as a supported Windows package type in
`SoftwareInstallerPlatformFromExtension`
- Updated validation to require install/uninstall scripts for zip files
(similar to `.exe` files)
- Added `addZipPackageMetadata` function to handle zip file metadata
extraction
- Updated error messages to include `.zip` in the list of supported file
types
- Enhanced `appExists` validation to detect provisioned AppX packages
(packages that are provisioned for all users but don't show up in the
programs table until a user logs in)
- Added version normalization logic to handle version string differences
(e.g., "11.2.1495.0" vs "11.2.1495")
- Updated winget ingester to recognize zip files and default to user
scope for MSIX/zip installers
**Frontend:**
- Added `.zip` to `windowsPackageTypes` in `package_type.ts`
- Updated `PackageAdvancedOptions` component to require
install/uninstall scripts for zip files
- Added validation rules for zip files in `PackageForm/helpers.tsx`
- Updated help text and tooltips to indicate script requirements for zip
packages
- Updated `software_install_scripts.ts` to include zip in default script
handling
**Maintained Apps:**
- Added Microsoft Company Portal as a maintained app example using zip
files
- Created install/uninstall PowerShell scripts that:
- Extract zip files containing AppX packages
- Provision packages for all future users (works in headless
environments)
- Install packages for the current user
- Handle both provisioned and installed package detection
**Tests:**
- Updated integration tests to include `.zip` in supported file type
error messages
- Updated unit tests for `SoftwareInstallerPlatformFromExtension` and
`SofwareInstallerSourceFromExtensionAndName`
### Use Case
This enables distribution of Windows AppX/MSIX packages that are
packaged as zip files (common for Microsoft Store apps like Company
Portal). The implementation handles both provisioned packages (for all
users) and user-installed packages, ensuring detection works in both
headless and interactive environments.
### Testing
- Updated existing tests to include zip file support
- Added Microsoft Company Portal as a maintained app example with full
install/uninstall scripts
---
**Note:** This PR follows the same pattern as `.exe` file support,
requiring custom install/uninstall scripts since zip files can contain
various content types that need custom handling.
Fixing the following warning:
```
$ make fleet
[...]
# github.com/shoenig/go-m1cpu
../../gopath/pkg/mod/github.com/shoenig/go-m1cpu@v0.1.6/cpu.go:75:17: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
../../gopath/pkg/mod/github.com/shoenig/go-m1cpu@v0.1.6/cpu.go:77:16: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
```
PS: This warning happens when building fleet because we need to decouple
the client code from `server/service`... (hopefully to be done as part
of https://github.com/fleetdm/fleet/issues/36087)
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#36544
- Removes outdated comment
- Send empty categories key instead of nothing to edit package API, so
that categories will be deleted instead of ignored.
# Checklist for submitter
## Testing
- [ ] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [x] QA'd all new/changed functionality manually
---------
Co-authored-by: Ian Littman <iansltx@gmail.com>
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves #
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
## Testing
- [ ] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [ ] QA'd all new/changed functionality manually
For unreleased bug fixes in a release candidate, one of:
- [ ] Confirmed that the fix is not expected to adversely impact load
test results
- [ ] Alerted the release DRI if additional load testing is needed
## Database migrations
- [ ] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [ ] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ ] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
## New Fleet configuration settings
- [ ] Setting(s) is/are explicitly excluded from GitOps
If you didn't check the box above, follow this checklist for
GitOps-enabled settings:
- [ ] Verified that the setting is exported via `fleetctl
generate-gitops`
- [ ] Verified the setting is documented in a separate PR to [the GitOps
documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485)
- [ ] Verified that the setting is cleared on the server if it is not
supplied in a YAML file (or that it is documented as being optional)
- [ ] Verified that any relevant UI is disabled when GitOps mode is
enabled
## fleetd/orbit/Fleet Desktop
- [ ] Verified compatibility with the latest released version of Fleet
(see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md))
- [ ] If the change applies to only one platform, confirmed that
`runtime.GOOS` is used as needed to isolate changes
- [ ] Verified that fleetd runs on macOS, Linux and Windows
- [ ] Verified auto-update works from the released version of component
to the new version (see [tools/tuf/test](../tools/tuf/test/README.md))
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#35513
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
## Testing
- [x] Added/updated automated tests
- [x] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [x] QA'd all new/changed functionality manually
---------
Co-authored-by: Magnus Jensen <magnus@fleetdm.com>
This pull request adds support for the Airtame application on both macOS
and Windows platforms. It introduces metadata, installation and
uninstallation scripts, and icon support for Airtame, making it
available in the maintained apps catalog and ensuring it displays
correctly in the frontend.
**Airtame Application Support:**
- Added input metadata for Airtame for both Homebrew (macOS) and Winget
(Windows) in `airtame.json` files, specifying installer formats,
identifiers, and categories.
[[1]](diffhunk://#diff-448b5795b8fb5f9487415e1d64f1fca6b57fa434b4d78ce452f732a9ffda479eR1-R8)
[[2]](diffhunk://#diff-146d9ec4238b454a4f86989b068060760f2d70523aed34b68f935d493b3f23dbR1-R10)
- Added output definitions for Airtame in `darwin.json` and
`windows.json`, including version info, installation/uninstallation
scripts, installer URLs, SHA256 hashes, and verification queries.
[[1]](diffhunk://#diff-0c571f0352dfef93766b985359e9f1ab34ed36284fd701429edc5b733be5aef6R1-R21)
[[2]](diffhunk://#diff-23e19ef30503f3c50c25a06132b64d193ecfd70698e2a4ae433dbde55148b6f0R1-R22)
- Updated `apps.json` to include Airtame entries for both macOS and
Windows, with appropriate descriptions and unique identifiers.
**Frontend/Icon Integration:**
- Added a new React icon component for Airtame in `Airtame.tsx`, using a
base64-encoded image.
- Registered the Airtame icon in the icon index and mapped it in
`SOFTWARE_NAME_TO_ICON_MAP` for proper display in the software catalog.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR12)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR233)
This pull request adds support for the Aircall application on Windows to
the maintained apps ecosystem. It introduces the necessary input and
output configuration files, as well as versioning and
installation/uninstallation scripts. Additionally, it updates the main
app listing to include Aircall for Windows.
**New Aircall Windows app support:**
* Added a new input definition for Aircall in `winget/aircall.json`,
specifying metadata such as package identifier, installer type, and
architecture.
* Created a new output file `aircall/windows.json` with version details,
installation and uninstallation scripts, download URL, and SHA256
checksum for Aircall version 3.1.66.
* Updated `apps.json` to list Aircall for Windows as a maintained app,
including its name, slug, platform, and unique identifier.
Resolves#36781.
---
- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [X] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
## Testing
- [X] Added/updated automated tests
- [X] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [X] QA'd all new/changed functionality manually
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Team labels are now supported, allowing labels to be assigned to
specific teams.
* **Bug Fixes**
* Label memberships properly clean up when hosts are transferred between
teams.
* Team deletion now cascades cleanup of associated team labels.
* Label query results are scoped to prevent stale or misapplied results.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ian Littman <iansltx@gmail.com>
This pull request adds support for the "8x8 Work" application on Windows
to the maintained apps system. The changes introduce input and output
definitions for the app, including installation and uninstallation
scripts, version metadata, and an entry in the global apps listing.
**Addition of 8x8 Work (Windows) application:**
* Added a new input definition for `8x8 Work` in `winget` format,
specifying package identifiers, architecture, installer type, and
default categories.
* Created an output file for `8x8 Work` on Windows, including version
metadata, installer and uninstaller scripts, SHA256 hash, upgrade code,
and detection SQL query.
* Added `8x8 Work` (Windows) entry to the global `apps.json` file,
including description and unique identifier.
This pull request adds support for managing the installation and
uninstallation of 010 Editor (version 16.0.2, 64-bit) on Windows via
Winget in the maintained apps system. It introduces metadata,
install/uninstall scripts, and output definitions for this application,
enabling automated deployment and inventory.
**010 Editor integration:**
* Added a new input definition for 010 Editor in
`winget/010-editor.json`, specifying metadata, installer details, and
script paths.
* Implemented PowerShell scripts for silent installation
(`010-editor_install.ps1`) and uninstallation
(`010-editor_uninstall.ps1`) tailored for Inno Setup-based installers.
[[1]](diffhunk://#diff-4d1e3101294ff5dcd9414cbbd5a470a1bd2942f5d4e8db5c25c9fe4098b815b3R1-R28)
[[2]](diffhunk://#diff-2ec71055559f078b69fc8cd53d483fc7738f0dbe7af384dda9587ecd76aeed23R1-R91)
**Output and inventory updates:**
* Generated a new output file `windows.json` for 010 Editor, including
version info, installation checks, installer URL, script references, and
SHA256 hash.
* Updated the main `apps.json` output to include 010 Editor as a Windows
application, ensuring it appears in the maintained apps inventory.
This pull request improves the robustness of the app ingestion process
by ensuring that only JSON files are processed, preventing potential
errors from non-JSON files (such as `.DS_Store` on macOS) being read.
File filtering improvements:
* Added a check in `ingester.go` for both the Homebrew and Winget
ingesters to skip any files that do not have a `.json` extension,
ensuring that only valid JSON files are ingested.
[[1]](diffhunk://#diff-abd7db4bef16a062c1bd81f54a7c846f1e91b913a9fe9f87976c8075f39b8cd2R45-R49)
[[2]](diffhunk://#diff-eb6c4ae7be41e61a2292c4240de750809d40c0686fb01f80f52df056ebc9c2a8R53-R57)
This pull request improves the logic for matching software source
strings to their corresponding icons by ensuring that more specific
matches are prioritized over more general ones. This is accomplished by
sorting the keys by length before attempting to match.
Matching logic improvements:
* Updated the `matchLoosePrefixToKey` function in
`frontend/pages/SoftwarePage/components/icons/index.ts` to sort
dictionary keys by length (longest first), ensuring that more specific
prefixes (such as "archaeology") are matched before shorter, more
general ones (like "arc").
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bL477-R478)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bL487-R490)
This pull request adds support for managing the installation and
uninstallation of Postman on Windows via Winget, and simplifies the
associated PowerShell scripts. The changes introduce a new Postman app
definition, refactor the install and uninstall scripts to remove
unnecessary complexity, and update the Postman icon in the frontend to
use a PNG image.
**Postman app management support:**
* Added a new `postman.json` manifest in
`ee/maintained-apps/inputs/winget/` to define Postman as a managed
application, including install/uninstall script paths and package
metadata.
**PowerShell script simplification:**
* Refactored `postman_install.ps1` to remove scheduled task logic and
run the installer directly with the `--silent` flag, improving
reliability and maintainability.
* Simplified `postman_uninstall.ps1` to directly search for and execute
the uninstall command for Postman, supporting silent uninstallation and
removing scheduled task and logging logic.
**Frontend update:**
* Updated the `Postman.tsx` icon component to use a PNG image instead of
inline SVG paths, ensuring consistency with other icon assets.
This pull request adds support for the Notion app on Windows to the
maintained apps system. It introduces new metadata, installation and
uninstallation scripts, and updates the relevant app listings and icon.
The most important changes are grouped below:
**Notion for Windows support:**
* Added a new input metadata file for Notion on Windows at
`ee/maintained-apps/inputs/winget/notion.json`, specifying installer
details, categories, and script paths.
* Added a new output app listing for Notion on Windows in
`ee/maintained-apps/outputs/apps.json` and created a dedicated manifest
at `ee/maintained-apps/outputs/notion/windows.json` with version,
installer, uninstall script references, and detection query.
[[1]](diffhunk://#diff-4c1446cfc02c6bb0bda874481e333c65b84e184fcea52f656b49a6489f73c9c2R977-R983)
[[2]](diffhunk://#diff-1dfe0659e83ec343ffcf27344c2dd5b257cf0bcc11434614acdc1820badda243R1-R21)
* Implemented install and uninstall PowerShell scripts for Notion on
Windows, referenced by the new manifest.
**Uninstallation improvements:**
* Updated the Notion uninstall script to ensure the `/S` flag is
included for silent uninstalls with NSIS installers, improving
reliability of unattended uninstalls.
[[1]](diffhunk://#diff-fe66fb3f5c34301a1a22112997ca0aa38ec0ccd9dc97db4cf2a845a8a8db6df1R36-R45)
[[2]](diffhunk://#diff-1dfe0659e83ec343ffcf27344c2dd5b257cf0bcc11434614acdc1820badda243R1-R21)
**UI/Icon update:**
* Replaced the SVG icon for Notion in the frontend with a PNG-based
image for improved appearance or compatibility.
**Other:**
* Clarified the description for Notion Calendar in the app listings for
better user understanding.
This pull request adds support for Microsoft Edge on Windows to the
maintained apps system and introduces a new icon for Microsoft Edge in
the frontend. The changes ensure that Microsoft Edge for Windows is
correctly represented in both backend data and the frontend UI.
**Microsoft Edge for Windows support:**
* Added a new input definition for Microsoft Edge in `winget` format,
specifying installation details and categories.
* Generated an output entry for Microsoft Edge on Windows in
`apps.json`, including its platform, slug, and description.
* Added a detailed output file for Microsoft Edge on Windows, including
version info, install/uninstall scripts, and metadata.
**Frontend icon integration:**
* Added a new React component `MicrosoftEdge.tsx` to provide an SVG icon
for Microsoft Edge.
* Registered the new icon in the icon mapping so it appears for Edge in
the software page UI.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR121)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR286)
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#36870
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
## Testing
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
This is to avoid a similar issue that we just faced in the future.
The issue was this PR https://github.com/fleetdm/fleet/pull/37118 was
merged, but all checks passed since it was a html file only PR, go tests
did not run. So we did not catch the integration tests asserting content
in these files was broken.
The following PR fixed it: https://github.com/fleetdm/fleet/pull/37196
This PR proposes to add those two files to GO test triggers in CI to
avoid breaking the tests accidentally in the future.
Closes: https://github.com/fleetdm/fleet/issues/30614
Changes:
- Added a section to the communications handbook page about removing old
versions of images from the Cloudflare cache.