Commit Graph
22018 Commits
Author SHA1 Message Date
Nico eeec20457d Preserve request body when retrying AssociateAssets request (#40515)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->

Resolves #40593 

This PR attempts to fix this error:

```
{"component":"http","err":"associating asset with adamID <adamId> to host <hostId>: making request to Apple VPP endpoint: making request to Apple VPP endpoint: Post \"https://vpp.itunes.apple.com/mdm/v2/assets/associate\": http: ContentLength=111 with Body length 0","host_id":<hostId>,"ip_addr":"<ip_addr>","level":"error","method":"POST","took":"20.748056032s","ts":"2026-02-25T09:53:32.10267006Z","uri":"/api/latest/fleet/device/<deviceId>/software/install/<id>","x_for_ip_addr":"<ip_addr>"}
```

Per my troubleshooting: `client.Do(req)` consumes the request body. When
retrying, the same `req` is reused but its body is not there -- so, the
retry sends `ContentLength=108` with an empty body, producing the `Body
length 0` error.

# 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

- [x] Added/updated automated tests

- [x] QA'd all new/changed functionality manually

Ran the test I added without the code fix, and was able to see the exact
same error

<img width="1188" height="567" alt="Screenshot 2026-02-25 at 3 26 12 PM"
src="https://github.com/user-attachments/assets/d7bdfee7-de33-43d0-92c6-e77fa46329d6"
/>

After:

<img width="852" height="140" alt="Screenshot 2026-02-25 at 3 26 55 PM"
src="https://github.com/user-attachments/assets/e7ec3ea5-2b29-463a-9038-e5530d654a4d"
/>
2026-03-02 10:08:00 -03:00
Marko Lisica a19ceffe05 Add windows in the sentence that explains automatic renewal of certs (#40677) 2026-03-02 11:41:31 +01:00
Gray Williams 852daea5c1 Fixes dead link for Windows (#40678)
The link to the script to enable scripts for Windows was incorrect.
2026-03-02 10:06:12 +00:00
Brock Walters 889bd6053e Update marketing-assets.md (#40779)
Improving marketing assets.md
2026-03-01 21:13:34 -06:00
johnjeremiah 55d37d2176 Update digital-campaigns.md (#40775)
Minor change to the digital campaign page
2026-03-01 21:12:50 -06:00
Ashish Kuthiala b15f98e5f3 Revise team roles and responsibilities in README (#40783)
Updated team roles and responsibilities with additional contributors and
details.
2026-03-01 20:49:50 -06:00
dependabot[bot] 3e102d4339 Bump minimatch from 10.2.2 to 10.2.4 in /tools/fleetctl-npm (#40774)
Bumps [minimatch](https://github.com/isaacs/minimatch) from 10.2.2 to
10.2.4.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/isaacs/minimatch/commit/c36addb94e33f14254b9ca9017e63ae9c9d80d1d"><code>c36addb</code></a>
10.2.4</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/26b90027d5ad0c383b5253a4e45d6dc7da282db4"><code>26b9002</code></a>
docs: add warning about ReDoS</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/3a0d83b6f03a17ebc15361c2faa7110777042aab"><code>3a0d83b</code></a>
fix partial matching of globstar patterns</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/ea94840326c3f40522f1b544bd2303024b0eec35"><code>ea94840</code></a>
10.2.3</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/0873fbabc00a86e09f4469386059a71abb136c93"><code>0873fba</code></a>
update deps</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/cecaad16d79d71a9e86445d934c694e3fb9bf134"><code>cecaad1</code></a>
more extglob coalescing for performance</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/11d0df6165d15a955462316b26d52e5efae06fce"><code>11d0df6</code></a>
limit nested extglob recursion, flatten extglobs</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/c3448c43a45d0f180e60c8974e05febb54ea5592"><code>c3448c4</code></a>
update assertValidPattern param type to unknown from any</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/0bf499aa45f5059b56809cc3b75ff3eafeb8d748"><code>0bf499a</code></a>
limit recursion for **, improve perf considerably</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/9f15c5819e99960c99bc7f13be437b2d4e1de2e6"><code>9f15c58</code></a>
update deps</li>
<li>See full diff in <a
href="https://github.com/isaacs/minimatch/compare/v10.2.2...v10.2.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=minimatch&package-manager=npm_and_yarn&previous-version=10.2.2&new-version=10.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/fleetdm/fleet/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 19:52:05 -06:00
kilo-code-bot[bot]andkiloconnect[bot] a0b5b72637 Update Fleet Champions handbook: link Customer testimonials to /customers page (#40773)
## Summary
- Converts the plain text "Customer testimonials" in the Fleet Champions
handbook page to a markdown link pointing to
https://fleetdm.com/customers
- Minimal change — only the link was added, no other content modified

## Changes
- `handbook/marketing/fleetchampions.md`: Changed `2. Customer
testimonials` to `2. [Customer
testimonials](https://fleetdm.com/customers)`

---

Built for [Ashish
Kuthiala](https://fleetdm.slack.com/archives/D0AG9JQ53GA/p1772334671153479)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-02-28 21:14:58 -06:00
RachelElysia a4ef7410e2 Fleet UI: Disable cancel checkbox for manual agent install, copy change, ungate from Windows MDM (#40735)
## Issue
Closes #37828 

## Description
3 followups:
- Cancel checkbox should be disabled for manual agent install
- Copy change matches Figma and not previous copy text
- Ungate from Windows MDM (released bug since September 2025 caught by
@iansltx 's thorough QA)

## Screenshots of fixes

- ungated
<img width="1377" height="629" alt="Screenshot 2026-02-27 at 4 24 09 PM"
src="https://github.com/user-attachments/assets/dc6e2a21-ff32-4ad2-aa81-de07c8d4c538"
/>

- checkbox now disabled along with rest of form
<img width="1377" height="638" alt="Screenshot 2026-02-27 at 4 24 00 PM"
src="https://github.com/user-attachments/assets/c2e8fe9e-9f4c-45e5-8934-28e0b5aa2908"
/>


## Testing

- [x] QA'd all new/changed functionality manually
2026-02-28 20:21:45 -06:00
johnjeremiah f3718dbd2c Create digital campaign handbook page (#40767)
This creates a handbook page defining digital campaigns and names for
agencies to use when collaborating with us
2026-02-28 15:25:38 -06:00
Luke Heath 29b41b37a6 Set secure cookie in SSO callback (#40765) 2026-02-28 12:28:38 -06:00
Victor Lyuboslavsky 89c6286f27 Updated old adding-new-endpoints guide. (#40760) 2026-02-28 11:39:29 -06:00
Luke Heath b928ba83a4 Set env vars to enable gitops fiel name deprecation warnings (#40757) 2026-02-28 11:37:25 -06:00
Victor Lyuboslavsky 62186cb6bd Final slog migration PR: test infrastructure + tools + remaining standalone files (#40727)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40540 

go-kit/log is no longer a direct dependency; moved kitlog adapter
required for some 3rd party libraries into its own package

# Checklist for submitter

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
  - Present in previous PR

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Modernized logging across the codebase: switched from legacy logging
wrappers to Go's standard slog, updated adapters, tests, tools, and
server components.
* Threaded the new slog logger through test utilities and tooling;
adjusted a small number of logging-related function/constructor
signatures to accept the new logger type (minor compatibility updates).
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-28 05:52:21 -06:00
Allen Houchins db34c2362e Update Windows Defender compliance check configuration (#40759)
This pull request updates the Windows Defender compliance check policy
to improve detection accuracy and coverage. The main changes include
more robust checks for Defender features, support for policy-based
registry keys, and updates to documentation to reflect the expanded
feature set.

**Expanded compliance checks:**

* The query now checks both standard and policy registry keys for all
Defender features, ensuring that settings managed by group policy are
detected. (`windows-defender-compliance-check.yml`,
[it-and-security/lib/windows/policies/windows-defender-compliance-check.ymlL6-R70](diffhunk://#diff-ea811153c9930b3eb086d3238ec03b3abadd46142e2679bd0fecf94580dd4662L6-R70))
* Added a new check for anti-spyware protection (`antispyware_enabled`),
making sure this critical feature is enabled.
(`windows-defender-compliance-check.yml`,
[it-and-security/lib/windows/policies/windows-defender-compliance-check.ymlL6-R70](diffhunk://#diff-ea811153c9930b3eb086d3238ec03b3abadd46142e2679bd0fecf94580dd4662L6-R70))

**Improved accuracy:**

* All registry value comparisons now explicitly cast data to integers,
reducing false negatives due to type mismatches.
(`windows-defender-compliance-check.yml`,
[it-and-security/lib/windows/policies/windows-defender-compliance-check.ymlL6-R70](diffhunk://#diff-ea811153c9930b3eb086d3238ec03b3abadd46142e2679bd0fecf94580dd4662L6-R70))
* The Defender service running check now directly verifies the service
status instead of relying on registry values.
(`windows-defender-compliance-check.yml`,
[it-and-security/lib/windows/policies/windows-defender-compliance-check.ymlL6-R70](diffhunk://#diff-ea811153c9930b3eb086d3238ec03b3abadd46142e2679bd0fecf94580dd4662L6-R70))

**Documentation updates:**

* The policy description and resolution steps have been updated to
include anti-spyware protection and clarify the list of features
checked. (`windows-defender-compliance-check.yml`,
[it-and-security/lib/windows/policies/windows-defender-compliance-check.ymlL64-R81](diffhunk://#diff-ea811153c9930b3eb086d3238ec03b3abadd46142e2679bd0fecf94580dd4662L64-R81))
2026-02-27 22:52:22 -06:00
LeslyTelloM d9d64f6b65 Fix typo in marketing README (#40695)
<!-- 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))
2026-02-27 22:20:54 -06:00
Ashish Kuthiala 9360007ee4 Document social media presence for Fleet in marketing handbook (#40557)
Added a list of social media platforms where Fleet has a presence,
including user IDs and links.
2026-02-27 22:19:05 -06:00
kilo-code-bot[bot]andkiloconnect[bot] 324de91ddc Add XProtect reports query for Workstations team (#40755)
## Summary

- Adds a new saved query (`collect-xprotect-reports.yml`) to collect
XProtect report data from macOS hosts using the `xprotect_reports`
osquery table
- The query captures malware detection events and remediation actions
performed by XProtect
- Assigned to the default (global) config in `default.yml` so the query
runs across **all teams**

## Changes

- **New file:**
`it-and-security/lib/macos/queries/collect-xprotect-reports.yml` — query
definition following existing conventions (snapshot logging, 300s
interval, darwin platform)
- **Modified:** `it-and-security/default.yml` — added path reference to
the new query in the `queries:` section so it applies to all teams
- **Modified:** `it-and-security/teams/workstations.yml` — removed the
query reference that was previously scoped only to Workstations

Built for [Allen
Houchins](https://fleetdm.slack.com/archives/D0AFASNBZMW/p1772249294834709?thread_ts=1772248848.978339&cid=D0AFASNBZMW)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-02-27 21:37:58 -06:00
kilo-code-bot[bot]andkiloconnect[bot] b1f5d91427 Update Firefox to 148.0 and add auto-remediation to update policy (#40743)
## Summary

- Updates the macOS Firefox software package from v143.0 to the latest
stable v148.0 (released Feb 24, 2026), which includes 50+ security fixes
- Updates the macOS Firefox update policy to require >= 148.0 (was
147.0.3)
- Adds `install_software` auto-remediation to the Firefox update policy
so hosts that fail the version check automatically receive the updated
package — following the same pattern used by the `1password-installed`
policy

### Changes

**`it-and-security/lib/macos/software/mozilla-firefox.yml`**
- Updated download URL from `Firefox 143.0.pkg` to `Firefox 148.0.pkg`

**`it-and-security/lib/macos/policies/update-firefox.yml`**
- Updated minimum version check from `147.0.3` to `148.0`
- Added `install_software.package_path` pointing to
`../software/mozilla-firefox.yml` so Fleet will automatically push the
updated Firefox package to non-compliant hosts

---

Built for
[mikermcneil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1772229267107939)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-02-27 21:06:35 -06:00
RachelElysia a2345bb75e Fleet UI: Allow 'textarea' onBlur, clean to never race (#40744)
## Issue
Closes #34167 

## Followup
- Add missing onBlur to text area inputs app wide
- Update onBlur function to not race with onChange

## Screenshot of fix


https://github.com/user-attachments/assets/9abfbef9-af0d-4247-a18e-e2ea1b4abd4d



## Testing

- [x] QA'd all new/changed functionality manually
2026-02-27 19:51:56 -06:00
Noah Talerman 9fa8952b07 Deploy Fleet: Host Fleet in your homelab (#40719)
For the following request:
- https://github.com/fleetdm/fleet/issues/33774
2026-02-27 18:06:18 -06:00
Mason Buettner 1c1016639f Fix issue link for automatic install support (#40732)
Updated issue link for automatic install support for Fleet-maintained
apps.

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #

# Checklist for submitter

The previously linked issue
https://github.com/fleetdm/fleet/issues/29584 was closed in favor of
https://github.com/fleetdm/fleet/issues/34492.
2026-02-27 18:05:49 -06:00
Katheryn Satterlee d565887fea Update host identifier recommendations in documentation (#40741)
Clarified recommendations for setting host identifiers when enrolling
hosts using Fleet generated packages.
2026-02-27 18:05:28 -06:00
Luke Heath 466b7592ff Handbook incident response process (#40436) 2026-02-27 17:32:43 -06:00
Victor Lyuboslavsky 593cf0112f Moved cleanup activities logic to activity bounded context. (#40663)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38536 

Split the activities cleanup job from the queries cleanup job.

# Checklist for submitter

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
  - Present in previous PR

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

* **New Features**
* Added automated cleanup job for expired live queries based on activity
expiration settings.

* **Improvements**
* Refactored activity data cleanup to use a dedicated service for better
reliability and maintainability.
* Enhanced scheduled cleanup operations with improved separation of
concerns for activity and live query management.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-27 16:21:23 -06:00
Jordan Montgomery d4237f8a4f Remove "do not enqueue setup experience items >24 hours after enrollment" logic for macOS hosts (#40739) 2026-02-27 16:15:34 -06:00
57c4f8c59f Skip MDM Declaration Validation logic with Configuration. (#38212)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #

This PR adds the ability to skip any Fleet logic that validates on
whether or not an MDM Declaration is usable with Fleet by setting a
configuration of `FLEET_MDM_SKIP_DECLARATION_VALIDATION` to `True`. We
would like to leverage declarations such as [config
files](https://developer.apple.com/documentation/devicemanagement/servicesconfigurationfiles)
as well as other none configuration declarations that are
[restricted](https://github.com/fleetdm/fleet/blob/main/server/fleet/apple_mdm.go#L736-L738)
like
[Activations](https://developer.apple.com/documentation/devicemanagement/activationsimple),
and any declaration that requires
[AssetData](https://developer.apple.com/documentation/devicemanagement/assetdata).
We understand that these are not usable by most Fleet customers,
especially those that use Fleets cloud hosting option.

Since we run Fleet on our own infrastructure we are able to leverage our
proxy to support all additional data components needed for declarations
above.

## Testing
I've built and run Fleet locally and validated that with the
`FLEET_MDM_SKIP_DECLARATION_VALIDATION` I am able to add any
declarations I please. Without the config I am unable to add the
requested declaration types above.

- [X] Added/updated automated tests

- [X] QA'd all new/changed functionality manually

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added experimental `mdm.allow_all_declarations` configuration option
to permit all Apple MDM declaration types when enabled, overriding
default validation checks.

* **Documentation**
* Updated configuration documentation with details for the new
experimental MDM option, including defaults, environment variables, YAML
format, and safety considerations.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Marko Lisica <83164494+marko-lisica@users.noreply.github.com>
Co-authored-by: Magnus Jensen <magnus@fleetdm.com>
2026-02-27 16:07:33 -05:00
Eric 7b37c3d359 Website: Update link to case study on customers page (#40728)
Changes:
- Fixed a broken `@click` link to a case study on the testimonials page.
2026-02-27 14:54:50 -06:00
Rachael Shaw 9f8e137954 Update tooltip for "End users can bypass" (#40560)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Expedited drafting change for #38041

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

## Testing

- [x] QA'd all new/changed functionality manually


### Screenshot:
<img width="413" height="184" alt="Screenshot 2026-02-25 at 6 04 19 PM"
src="https://github.com/user-attachments/assets/50def1d7-71d4-4c18-932e-ba98f7880ab0"
/>
2026-02-27 14:53:44 -06:00
melpike 891289b687 Update copy for instances when qr code is expired (#40707)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40624
2026-02-27 13:45:48 -07:00
EricandMike Thomas 84b9027148 Website: update case study articles (#40567)
Closes: https://github.com/fleetdm/fleet/issues/40161
Closes: https://github.com/fleetdm/confidential/issues/14508

Changes:
- Added support for a new meta tag (`<meta
name="useBasicArticleTemplate" value="true">`) that will be used to
determine which template case study articles use.
- Updated the build-static-content script to not require
`summaryChallenge`, `summarySolution`, `summaryKeyResults`, and
`companyLogoFilename` meta tags for case study articles with a
`useBasicArticleTemplate` meta tag.
- Updated the view-case-study action to display case study articles with
a `useBasicArticleTemplate` meta tag on the basic-article template page

---------

Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
2026-02-27 14:33:42 -06:00
Victor Lyuboslavsky 7107b1fa14 Optimized api/latest/fleet/software/titles endpoint (#40458)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #35799 

Loadtest results for 100K hosts and 300K software titles.

```
=== Performance Test Results: No team_id (all teams) ===

Description                     Average  Worst    Results
-----------                     -------  -----    -------
Page 0, hosts_count DESC        229ms    241ms    20 items
Page 0, hosts_count ASC         203ms    211ms    20 items
Page 1, hosts_count DESC        339ms    423ms    20 items
Page 1000, hosts_count DESC     202ms    219ms    20 items
100 per_page, hosts_count DESC  620ms    708ms    100 items
Default sort (no order params)  229ms    245ms    20 items
Order by name ASC, page 0       4.642s   4.785s   20 items
Order by name ASC, page 1000    6.418s   6.771s   20 items
Vulnerable only                 3.431s   3.496s   20 items
Search 'chrome'                 9.6s     10.111s  20 items
Known exploit filter            9.792s   10.102s  20 items
Min CVSS score 7.0              12.368s  12.665s  20 items
CVSS range 7.0-9.0              12.221s  12.523s  20 items
Available for install           87ms     93ms     NO RESULTS
Self-service only               4.46s    4.757s   20 items

=== Performance Test Results: team_id=0 (no team / unassigned) ===

Description                     Average  Worst    Results
-----------                     -------  -----    -------
Page 0, hosts_count DESC        378ms    404ms    20 items
Page 0, hosts_count ASC         339ms    345ms    20 items
Page 1, hosts_count DESC        478ms    513ms    20 items
Page 1000, hosts_count DESC     398ms    417ms    20 items
100 per_page, hosts_count DESC  864ms    1.025s   100 items
Default sort (no order params)  399ms    411ms    20 items
Order by name ASC, page 0       5.346s   5.41s    20 items
Order by name ASC, page 1000    7.444s   7.615s   20 items
Search 'chrome'                 9.051s   9.245s   20 items
Known exploit filter            10.511s  10.884s  20 items
Min CVSS score 7.0              16.589s  16.701s  20 items
CVSS range 7.0-9.0              15.878s  15.999s  20 items
Available for install           1.394s   1.429s   1 items
Self-service only               1.4s     1.456s   1 items
```

Documented in the issue:
The fix includes a small behavior change. The default primary sort of
/software/titles remains host_counts, but the secondary sort is now
software_title_id and not name. This was necessary to optimize the
endpoint. This means that if you have 1 host in your fleet, the software
page will not show the software titles ordered by name anymore. For
large fleets, this does not matter since all titles generally have
different host counts.

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually

## Database migrations

- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Optimized the software titles endpoint for improved query performance
and faster data retrieval.
* Enhanced database efficiency when retrieving software information,
resulting in better overall system responsiveness and reduced query
times.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-27 14:30:05 -06:00
Victor Lyuboslavsky bf9180e6e3 slog migration: initLogger + serve.go + cron + schedule (#40699)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40540 

Almost done with slog migration.

# Checklist for submitter

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
  - Changes present in previous PR

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Updated internal logging infrastructure to use Go's standard logging
library, modernizing the logging system while maintaining existing
functionality and error handling behavior.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-27 14:29:27 -06:00
Nico 6543d97f06 Fix end user auth form: allow saving cleared IdP settings (#40424)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #32835

# Checklist for submitter

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

- Verify that settings can only be cleared if some settings were stored
previously (at least one of the form fields were filled).

## Testing

- [x] Added/updated automated tests

- [x] QA'd all new/changed functionality manually



https://github.com/user-attachments/assets/522ec6e3-1826-459e-9649-314c4d5f7190
2026-02-27 17:09:54 -03:00
Rachael ShawandAllen Houchins a5cafd34cf Update resolution instructions for "macOS - All available software updates installed" (#40700)
I think the resolution is out-of-date; "Update all" isn't available:
<img width="360" height="263" alt="Screenshot 2026-02-27 at 11 35 50 AM"
src="https://github.com/user-attachments/assets/89c68c81-23e6-427c-a742-88c8fce15564"
/>

([Slack
thread](https://fleetdm.slack.com/archives/C09861YJUJ2/p1772150972961499))

---------

Co-authored-by: Allen Houchins <allenhouchins@mac.com>
2026-02-27 13:59:33 -06:00
Zach Wasserman 1f3bff9954 Add wifi_network and local_network_permissions tables to fleetd (#40652)
**Related issue:** Resolves #40629

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

## Testing
- [x] QA'd all new/changed functionality manually

## fleetd/orbit/Fleet Desktop

- [x] 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))
- [x] If the change applies to only one platform, confirmed that
`runtime.GOOS` is used as needed to isolate changes
- [x] Verified that fleetd runs on macOS, Linux and Windows (macOS only)
2026-02-27 11:49:41 -08:00
Zach Wasserman 8b904702a0 Fix documentation for CI (#40712) 2026-02-27 11:19:14 -08:00
Jahziel Villasana-Espinoza 7500c69534 retry software installer download and upload during gitops (#40643)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #39247 

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

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
2026-02-27 14:05:15 -05:00
518475fc4c Prioritize using IdP email address when available for maintenance window scheduling (#37250)
This pull request updates the logic for selecting which user receives
maintenance window calendar events on hosts with multiple users. The
changes clarify and enforce a priority system for choosing the recipient
email, ensuring that IdP-sourced emails are preferred, followed by
Google Chrome profile emails. This affects both user-facing
documentation and backend implementation.

**User-facing behavior and documentation:**

* The end-user documentation now explicitly describes the email
selection priority for calendar event recipients: IdP Username email is
chosen first, then Google Chrome profile email, and if multiple Chrome
emails exist, the first alphabetically is selected.

**Backend logic and data selection:**

* The comment in `calendar_cron.go` is updated to match the new email
selection logic, explaining the prioritization of email sources for
host-user assignment.

* The SQL query in `policies.go` is refactored to implement the new
priority system for selecting user emails per host:
  - IdP sources (`mdm_idp_accounts`, `idp`) are considered first,
  - then Google Chrome profiles,
  - then other sources.
- If multiple emails exist at the same priority, the first
alphabetically is chosen.

---------

Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Co-authored-by: Noah Talerman <47070608+noahtalerman@users.noreply.github.com>
Co-authored-by: Juan Fernandez <juan-fdz-hawa@users.noreply.github.com>
Co-authored-by: Juan Fernandez <juan@fleetdm.com>
2026-02-27 14:57:43 -04:00
Juan Fernandez c95283c490 Updated documentation for file carving REST endpoints (#40698)
Added notes explaining that network error will result in a failed carve
operation.
2026-02-27 14:43:36 -04:00
Mike McNeil 6cd23c0ef1 Set to aware instead of intrigued (precursor for retiring "intrigued") (#40703) 2026-02-27 12:29:41 -06:00
Eric bf0c275d0c Website: Update Vanta script to exclude built-in macOS applications in device inventory (#40701)
Changes:
- Updated the send-data-to-vanta script to exclude built-in macOS
applications (besides XProtect) when reporting device inventory for a
Vanta Integration. This is done to reduce the size of the device
inventory request and allow for more macOS hosts to be reported to
Vanta.
2026-02-27 11:58:37 -06:00
Magnus Jensen 7f6b65f6b3 remove windows profile osquery verification (#40539)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #39673

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

## Testing

- [x] Added/updated automated tests

- [ ] QA'd all new/changed functionality manually
2026-02-27 12:21:45 -05:00
Noah Talerman 3793101f64 Update gitops.go (#38863)
- Moved this information out of the YAML reference:
https://github.com/fleetdm/fleet/pull/38862/files#diff-b71104232d8fbaaf4bd537065533cbf39ec5f9bf028ec1d8083346953ed5178dL5
2026-02-27 11:20:29 -06:00
Gabriel Hernandez 1dbed016f8 use best practices for hooks in the app page component (#40591)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->

This updates the functions in `App.tsx` to use the best practice and
include all deps in the dep array. This also requires some of these
functions to use `useCallback`.
2026-02-27 17:06:56 +00:00
Gabriel Hernandez b220c40152 fix overflow of button off the table on the os settings modal (#40697)
**Related issue:** Resolves #39361

This fixes an issue of the overflow of the resend button off the edge of
the os settting modal table.

We've changed the syling to grow and shrink the error text and column
dynamically so that the table will always be pushed up against the right
edge and the text will grow and shrink as needed so that it wont push
the button any further right

<img width="838" height="436" alt="image"
src="https://github.com/user-attachments/assets/a5acfd44-0d77-4062-92e4-909077827fee"
/>

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] QA'd all new/changed functionality manually
2026-02-27 17:04:14 +00:00
Gabriel Hernandez 18cde24cd9 allow ios and ipados hosts profiles to be resent (#40684)
**Related issue:** Resolves #40066

This allows ipados and ios devices to resend their profiles on the host
details and my device pages

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] QA'd all new/changed functionality manually
2026-02-27 17:03:52 +00:00
dependabot[bot] 9165b31bb0 Bump minimatch in /.github/actions/eng-metrics (#40688)
Bumps and [minimatch](https://github.com/isaacs/minimatch). These
dependencies needed to be updated together.
Updates `minimatch` from 3.1.2 to 3.1.5
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/isaacs/minimatch/commit/7bba97888a27a6162983056bcce2a6e28f668712"><code>7bba978</code></a>
3.1.5</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/bd259425b2ca17b42897997f93e890314155522d"><code>bd25942</code></a>
docs: add warning about ReDoS</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/1a9c27c75725474dbde57db2995b6281b267756d"><code>1a9c27c</code></a>
fix partial matching of globstar patterns</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/1a2e084af579731af66c221214e3ca8222c9bf23"><code>1a2e084</code></a>
3.1.4</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/ae24656237c3d58067442f790ce17eff84463a47"><code>ae24656</code></a>
update lockfile</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/b1003749228b2a79e1f237963a0d559ef7a0941e"><code>b100374</code></a>
limit recursion for **, improve perf considerably</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/26ffeaa091b9f660833e23f42e07165b33e85c13"><code>26ffeaa</code></a>
lockfile update</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/9eca892a4e5dbb20534f9f30483b85cdeee6c2eb"><code>9eca892</code></a>
lock node version to 14</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/00c323b188b704e5d4bc534ecec2268cfa70a32a"><code>00c323b</code></a>
3.1.3</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/30486b2048929264f44d18822891cfffa02af78b"><code>30486b2</code></a>
update CI matrix and actions</li>
<li>Additional commits viewable in <a
href="https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `minimatch` from 9.0.5 to 9.0.9
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/isaacs/minimatch/commit/7bba97888a27a6162983056bcce2a6e28f668712"><code>7bba978</code></a>
3.1.5</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/bd259425b2ca17b42897997f93e890314155522d"><code>bd25942</code></a>
docs: add warning about ReDoS</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/1a9c27c75725474dbde57db2995b6281b267756d"><code>1a9c27c</code></a>
fix partial matching of globstar patterns</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/1a2e084af579731af66c221214e3ca8222c9bf23"><code>1a2e084</code></a>
3.1.4</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/ae24656237c3d58067442f790ce17eff84463a47"><code>ae24656</code></a>
update lockfile</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/b1003749228b2a79e1f237963a0d559ef7a0941e"><code>b100374</code></a>
limit recursion for **, improve perf considerably</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/26ffeaa091b9f660833e23f42e07165b33e85c13"><code>26ffeaa</code></a>
lockfile update</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/9eca892a4e5dbb20534f9f30483b85cdeee6c2eb"><code>9eca892</code></a>
lock node version to 14</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/00c323b188b704e5d4bc534ecec2268cfa70a32a"><code>00c323b</code></a>
3.1.3</li>
<li><a
href="https://github.com/isaacs/minimatch/commit/30486b2048929264f44d18822891cfffa02af78b"><code>30486b2</code></a>
update CI matrix and actions</li>
<li>Additional commits viewable in <a
href="https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/fleetdm/fleet/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 10:39:46 -06:00
George Karr 941816e3c3 Revise daily standup steps for priority review (#40605)
Adding an explicit check to scrum to review p0-1 and make sure they have
daily updates until they are ready for QA / merged.
2026-02-27 09:44:21 -06:00
Josh RoskosandMagnus Jensen 9589631a7f Fix DigiCert CA UPN variable substitution cross-host contamination (#40474)
**Related issue:** Resolves #39324

# Checklist for submitter

- [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)

## 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

For unreleased bug fixes in a release candidate, one of:

- [x] Confirmed that the fix is not expected to adversely impact load
test results

---------

Co-authored-by: Magnus Jensen <magnus@fleetdm.com>
2026-02-27 10:34:46 -05:00