Commit Graph
22807 Commits
Author SHA1 Message Date
Jahziel Villasana-Espinoza 2e6ffa747d fix usage of query params in host software endpoint (#42302)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41631 

# 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), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## 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
2026-03-24 17:53:19 -04:00
Lucas Manuel Rodriguez 8b3674bc55 Fix CVE fleetdm/fleet alerts (#42314)
Fixes
https://github.com/fleetdm/fleet/actions/runs/23476076250/job/68309012488.

Runs:
- https://github.com/fleetdm/fleet/actions/runs/23498265614
2026-03-24 17:38:46 -03:00
Lucas Manuel Rodriguez 3aa63d804b Fix fleetdm/wix warnings (#42312)
Fixes
https://github.com/fleetdm/fleet/actions/runs/23475951459/job/68308629296.

Runs:
- https://github.com/fleetdm/fleet/actions/runs/23497560995 (remote)
- https://github.com/fleetdm/fleet/actions/runs/23497590149 (local)
2026-03-24 17:38:33 -03:00
Rachael ShawandJacob Shandling 40df80f848 Update "Add hosts" modal copy (#41517)
Follow-up to https://github.com/fleetdm/fleet/pull/41055

---------

Co-authored-by: Jacob Shandling <jacob@shandling.dev>
2026-03-24 15:35:26 -05:00
Gray WilliamsandMitch Francese 330842209b Fix typo under pricing faq (#42319)
Fix typo under the pricing faq entry

Co-authored-by: Mitch Francese <2227948+tux234@users.noreply.github.com>
2026-03-24 15:14:02 -05:00
Noah Talerman c48e13896a Config for contributors reference (#42303)
- Make experimental `allow_all_declarations` use language that's
consistent w/ the FileVault/OS updates experimental config
2026-03-24 15:13:50 -05:00
RachelElysia 3c300e92b8 Fleet UI: Add max height to dropdowns that can be infinitely long (#42317) 2026-03-24 14:41:26 -04:00
0128279fd5 Add open position: 🚀 Customer Support Engineer (APAC) (#42320)
## Summary
- Adds a new open position entry for "🚀 Customer Support Engineer
(APAC)" to `handbook/company/open-positions.yml`
- Based on the existing (commented-out) Customer Support Engineer
template, with the same department, hiring manager, OTE,
responsibilities, and experience requirements

## Changes
- `handbook/company/open-positions.yml`: Added new active position entry
for Customer Support Engineer (APAC)

---

Built for [Isabell
Reedy](https://fleetdm.slack.com/archives/D0AEGJCGJR0/p1774371863364109)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Isabell Reedy <113355639+ireedy@users.noreply.github.com>
2026-03-24 17:16:16 +00:00
Jonathan Katz c10df65288 Software documentation updates (#42164)
A few small changes to the Contributing documentation as part of oncall
responsibility.
2026-03-24 12:39:47 -04:00
9cd09f933e Add article: Enroll MacBook Neo at scale with Fleet zero-touch enrollment (#42210)
## Summary

- Adds a new article covering how to use Fleet and Apple Business
Manager to enroll large numbers of MacBook Neos with zero-touch
enrollment
- References and quotes Jonny Evans' Computerworld article on MacBook
Neo as the Mac's potential "iPhone moment" in the enterprise
- Provides practical guidance for IT teams planning a large-scale
MacBook Neo rollout, including ABM setup, enrollment configuration,
GitOps workflows, and ongoing fleet management

## Changes

- New file:
`articles/enroll-macbook-neo-at-scale-with-fleet-zero-touch.md`

Built for
[mikermcneil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1774111597501669?thread_ts=1774105884.042939&cid=D0AFASLRHNU)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
2026-03-25 01:03:37 +09:00
3a6aab622f Update Firefox to 149.0 for Workstations team (#42315)
## Summary

- Updates Firefox from 148.0.2 to 149.0 (released March 23, 2026) across
the Workstations team configuration
- Updates macOS custom package download URL to Firefox 149.0
- Updates macOS and Windows version-check policies to enforce version >=
149.0

## Changes

| File | Change |
|---|---|
| `it-and-security/lib/macos/software/mozilla-firefox.yml` | Updated
package URL from 148.0.2 to 149.0 |
| `it-and-security/lib/macos/policies/update-firefox.yml` | Updated
version check from 148.0.2 to 149.0 |
| `it-and-security/lib/windows/policies/update-firefox.yml` | Updated
version check from 148.0.2 to 149.0 |

## Notes

- Firefox on Windows uses the Fleet-maintained app (`slug:
firefox/windows`), which is managed by the Fleet catalog and will
auto-update when the catalog is refreshed
- Firefox on macOS uses a custom package URL since the existing pattern
uses a `.pkg` installer
- Both macOS and Windows already have self-service enabled and
corresponding update policies with calendar event enforcement (macOS)

Built for [Allen
Houchins](https://fleetdm.slack.com/archives/D0AFASNBZMW/p1774366778146629)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com>
2026-03-24 10:50:53 -05:00
Marko Lisica 6cd80d3c51 [Docs] VPP is not returned in fleetctl get config if set via UI or API (#42071)
Related to:

- #39641
2026-03-24 16:17:34 +01:00
Lucas Manuel Rodriguez 4f59eaceea Add ignores for CVE-2026-0861 in bomutils (#42292)
Resolves
https://github.com/fleetdm/fleet/actions/runs/23476296008/job/68309683127.

Run: 
- https://github.com/fleetdm/fleet/actions/runs/23487678187
- https://github.com/fleetdm/fleet/actions/runs/23487670926
2026-03-24 12:10:49 -03:00
Lucas Manuel Rodriguez ec9610bcea Fix security warnings on fleetdm/fleetctl (#42276)
Fixes: https://github.com/fleetdm/fleet/actions/runs/23424438962

New runs: 
- Local: https://github.com/fleetdm/fleet/actions/runs/23463124995.
- Remote: https://github.com/fleetdm/fleet/actions/runs/23463145956.
2026-03-24 12:10:29 -03:00
Allen Houchins be0f0b29cd Update title casing in SKILL.md (#42310) 2026-03-24 10:05:55 -05:00
2af8fa1c45 Update Fleet-maintained apps (#42308)
Automated ingestion of latest Fleet-maintained app data.

---------

Co-authored-by: mostlikelee <16102903+mostlikelee@users.noreply.github.com>
Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com>
2026-03-24 09:58:35 -05:00
Carlo c68eb8be62 Fix missing FMA apps added via GitOps (#42306)
**Related issue:** Fixes #42260 

# 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-03-24 10:53:23 -04:00
150318c87e Add Python script support for macOS and Linux (#38562)
This commit introduces support for Python (.py) scripts on macOS and
Linux, including validation for Python shebangs and updates to
documentation, UI, error messages, and backend validation logic. It also
updates tests and file upload handling to recognize and properly process
Python scripts alongside existing shell (.sh) and PowerShell (.ps1)
scripts.

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

---------

Co-authored-by: Jordan Montgomery <elijah.jordan.montgomery@gmail.com>
Co-authored-by: melpike <79950145+melpike@users.noreply.github.com>
Co-authored-by: jkatz01 <yehonatankatz@gmail.com>
Co-authored-by: Jonathan Katz <44128041+jkatz01@users.noreply.github.com>
2026-03-24 10:01:54 -04:00
Jahziel Villasana-Espinoza 588106aca1 SHAA: host dep details API (#42250)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40794

# Checklist for submitter

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

- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.

## 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
2026-03-24 09:49:26 -04:00
Nico a265768d20 [Host details > Reports] Frontend changes (#42017)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41533

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

## Testing

- [ ] Added/updated automated tests

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



https://github.com/user-attachments/assets/64a5f726-1e9f-4508-8726-6227813dcc77

Below I show the `Report clipped` and the `X additional results not
shown` states. For that, I manually inserted records in my DB:

```sql
-- make "clipped"
  INSERT INTO query_results (query_id, host_id, last_fetched, data)
  SELECT 1, t.n + 1000, NOW(), '{"fake_key": "fake_value"}'
  FROM (
      SELECT a.N + b.N * 10 + c.N * 100 AS n
      FROM (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION
  SELECT 9) a,
           (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION
  SELECT 9) b,
           (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION
  SELECT 9) c
  ) t
  WHERE t.n BETWEEN 1 AND 999;

-- populate extra query results
INSERT INTO query_results (query_id, host_id, last_fetched, data)
  VALUES
    (1, 2, NOW(), '{"pid": "9999", "version": "5.21.0"}'),
    (1, 2, NOW(), '{"pid": "8888", "version": "5.20.0"}');
```


https://github.com/user-attachments/assets/8056ea4c-b042-47cf-a05f-ee9d8621252a

Pagination (manually changed to 3 items per page for testing purposes)



https://github.com/user-attachments/assets/87a97259-0821-4659-a612-c952e98a158c
2026-03-24 10:45:34 -03:00
Scott GressandNoah Talerman 994843f330 Small tweaks to default.yml template for fleetctl new (#42239)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** For #41345

* Adds a missing comment delimiter
* Adds required `organization_name` to `apple_business_manager` section
* Adds required `location` to `volume_purchasing_program ` section
* Adds Windows MDM section with `windows_enabled_and_configured`,
required for the Windows OS update settings to work

---------

Co-authored-by: Noah Talerman <47070608+noahtalerman@users.noreply.github.com>
2026-03-24 08:42:48 -05:00
Gabriel Hernandez 64777a7e07 add expiration to auth token via sso login (#42094)
**Related issue:** Resolves #42296

This fixes an issue where users who login via sso were not having an
expiration date set on their host token cookie. This would cause them to
have to relogin after every browser session

- [x] QA'd all new/changed functionality manually
2026-03-24 12:17:21 +00:00
Allen Houchins cf04d4d4d0 Add display_name for Mozilla Firefox (#42286)
Add display_name: "Mozilla Firefox" to the Firefox software entries in
it-and-security/fleets/workstations.yml (macOS and Windows sections).
This ensures a consistent, user-facing name in self-service catalogs for
both platforms.
2026-03-23 22:20:34 -05:00
kilo-code-bot[bot]andkiloconnect[bot] c2f4c9638b Remove WhatsApp block rule and deploy Santa profiles to all Workstations Macs (#42285)
## Summary

- **Removed the WhatsApp block rule** from the Santa rules configuration
profile (`santa-rules.mobileconfig`). The rule blocked WhatsApp.app via
a CDHASH identifier (`54a8ec11bcea48a276b1fdce556a29108ba77de4`) and is
no longer needed.
- **Expanded Santa profile deployment to all macOS hosts** on the
Workstations team. Both `santa-configuration.mobileconfig` and
`santa-rules.mobileconfig` were previously scoped only to the `"Santa
test devices"` label (4 specific Macs). Removed the `labels_include_any`
restriction so these profiles now install on all Macs in the
Workstations team.
- **Deleted the "Santa test devices" label entirely.** Removed the label
definition file (`santa-test-devices.yml`), its reference in
`default.yml`, and all remaining `labels_include_any` references to it
from the Santa software entry, install-santa-extension policy, and
collect-santa-denied-logs report.

## Changes

###
`it-and-security/lib/macos/configuration-profiles/santa-rules.mobileconfig`
- Removed the `BLOCKLIST` / `CDHASH` rule entry for WhatsApp.app
(identifier `54a8ec11bcea48a276b1fdce556a29108ba77de4`)
- The allowlist for North Pole Security (Team ID) and the test block
rule for BundleExample.app remain unchanged

### `it-and-security/fleets/workstations.yml`
- Removed `labels_include_any: ["Santa test devices"]` from the
`santa-configuration.mobileconfig` and `santa-rules.mobileconfig`
profile entries
- Removed `labels_include_any: ["Santa test devices"]` from the Santa
software entry
- All Santa-related profiles and software now apply to all macOS hosts
on the Workstations team

### `it-and-security/lib/all/labels/santa-test-devices.yml` (deleted)
- Removed the manual label definition for "Santa test devices"
(previously scoped to 4 specific Macs)

### `it-and-security/default.yml`
- Removed the label path reference to `santa-test-devices.yml`

### `it-and-security/lib/macos/policies/install-santa-extension.yml`
- Removed `labels_include_any: ["Santa test devices"]` so the policy
applies to all macOS hosts

### `it-and-security/lib/macos/reports/collect-santa-denied-logs.yml`
- Removed `labels_include_any: ["Santa test devices"]` so the report
applies to all macOS hosts

---

Built for [Allen
Houchins](https://fleetdm.slack.com/archives/D0AFASNBZMW/p1774320804143629?thread_ts=1774320368.198119&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-03-23 22:09:18 -05:00
kilo-code-bot[bot]andkiloconnect[bot] 1e326f5b45 Update Firefox macOS policy to enable scheduled maintenance (#42283)
## Summary

- Enables `calendar_events_enabled` on the macOS Firefox update policy,
matching the 1Password update policy pattern
- Updates the description to use "This device" (consistent with the
1Password policy language)
- Updates the resolution text to reference Self-service and scheduled
maintenance windows instead of Firefox's built-in updater

This aligns the Firefox update enforcement with how 1Password updates
are already handled — via calendar event automations that notify users
of upcoming scheduled maintenance windows.

Built for [Allen
Houchins](https://fleetdm.slack.com/archives/D0AFASNBZMW/p1774318829543349)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-03-23 21:35:20 -05:00
Allen Houchins 51f00a3c2c Enable calendar events on Workstations fleet (#42284) 2026-03-23 21:33:51 -05:00
Allen Houchins 52f82571e4 Update 1Password macOS policy to enable scheduled maintenance (#41932)
Refine policy description and resolution messaging for the macOS
1Password check: change 'The host' to 'This device', direct users to
download from Self-service and note automatic install during scheduled
maintenance, and enable calendar events by setting
calendar_events_enabled to true.
2026-03-23 21:04:20 -05:00
Ashish Kuthiala aaf5721304 Remove Product Education Manager from README (#42280)
Removed Product Education Manager from the team list.
2026-03-23 19:42:37 -05:00
Ashish Kuthiala 84f3332a79 Correct Marketing Campaign Manager's name (#42279)
Updated the name of the Marketing Campaign Manager from 'Michael D Buck'
to 'Michael Buck'.
2026-03-23 19:16:51 -05:00
Michael BuckandAshish Kuthiala b5e74ddda7 removed middle initial from name (#42175)
Co-authored-by: Ashish Kuthiala <53918208+akuthiala@users.noreply.github.com>
2026-03-23 18:45:53 -05:00
Noah Talerman 02af994bb2 Renaming: YAML reference (#42115)
Part of the following issue:
- #41419
2026-03-23 17:55:18 -05:00
abb5aef6e3 Add Adam Anklewicz (Thumbtack) testimonial to customers page (#42229)
## Summary

- Adds a new testimonial from Adam Anklewicz (Manager of IT Endpoint
Engineering, Thumbtack) to the Fleet customers page
- Quote highlights Fleet's responsive Slack-based support as a key
selling point
- Testimonial is positioned prominently (2nd in sort order) on the
customers page
- Uses existing Thumbtack logo image (`thumbtack-logo-197x40@2x.png`)
for the testimonial card

### Changes

- `handbook/company/testimonials.yml` — Added new testimonial entry with
all required fields
- `website/api/controllers/view-testimonials.js` — Added Adam Anklewicz
to the sort order (2nd position)
-
`website/assets/images/testimonial-author-adam-anklewicz-100x100@2x.png`
— Placeholder profile image (to be replaced with actual LinkedIn photo)

> **Note:** The profile image
(`testimonial-author-adam-anklewicz-100x100@2x.png`) is currently a
placeholder. It should be replaced with Adam's actual profile photo from
LinkedIn before merging.

Built for [Michael
Thomas](https://fleetdm.slack.com/archives/D0AL6RD36GL/p1774252288344369)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
2026-03-23 17:19:20 -05:00
Mike Thomas 2067bd9e60 Update MDM comparison PDF (#42228)
Replace PDF with updated content and CTA.
2026-03-23 17:11:15 -05:00
Allen Houchins 800f117660 Add kilocode SKILL.md for Fleet GitOps (#42258)
Create initial .kilocode/skills/fleet-gitops/SKILL.md to document
guidelines for working with Fleet GitOps configuration. Includes rules
for osquery queries and Fleet reports, validation guidance for Apple,
Windows, and Android configuration profiles, guidance on using
Fleet-maintained apps vs custom packages, and Declarative Device
Management (DDM) declaration validation. Also includes references to
Fleet, Apple, ProfileManifests, and Microsoft documentation. This is the
first version and will be expanded as patterns and constraints evolve.
2026-03-23 16:03:33 -05:00
Dante Catalfamo 4df9ae01a6 41542 android cert resend backend (#42099)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41542
2026-03-23 17:01:52 -04:00
Luke Heath d55d2571bb Fix incorrect labels on VPP and ABM tables (#41986) 2026-03-23 14:13:17 -05:00
Victor Lyuboslavsky eb71cd43b9 Removed the ptr helper package from Activity bounded context (#42161)
Refactoring. No functional changes.

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

## Summary by CodeRabbit

* **Refactor**
* Simplified internal pointer value construction across activity-related
test and service code by consolidating helper functions and using Go's
built-in operators. No changes to user-facing functionality.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-03-23 14:10:07 -05:00
Eric ff35963a56 Website: Add qualified to contact forms (#42259)
Closes: https://github.com/fleetdm/confidential/issues/14602

Changes:
- Added qualified to website forms.
2026-03-23 13:28:06 -05:00
Lucas Manuel Rodriguez 6816a8294e Update host vitals docs (#42254)
This is breaking CI on PRs.
2026-03-23 15:00:51 -03:00
Victor Lyuboslavsky ea22c8087b Bind docker ports to 127.0.0.1 (#42232)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42226

When doing dev in a remote environment, like a public cloud VM, don't
expose ports to the public.
This is a contributor security improvement.

The localstack fail is present on main, and was not caused by this
change:
https://github.com/fleetdm/fleet/actions/runs/23439965808/job/68187858627

# Checklist for submitter

## Testing

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


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

## Summary by CodeRabbit

* **Chores**
* Docker Compose configuration updated across multiple services (Redis,
MySQL, mail, monitoring, and storage services) to restrict port bindings
to localhost only instead of all network interfaces.
* Documentation Docker Compose examples updated to reflect
localhost-only port binding for core services.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-03-23 12:30:23 -05:00
Luke Heath 1d5dfa0c79 Add @lukeheath as code owner for /docs/solutions (#42256) 2026-03-23 12:22:11 -05:00
Josh Roskos 39e6e6e82e Rename section for certificate renewal process (#42251)
Updated section title from 'Automated workflow' to 'Renewal workflow'
for clarity.
2026-03-23 12:17:08 -05:00
Mitch Francese 7be1d2bb42 Add kitty as a Fleet-maintained app (#41574)
## Summary

- Adds kitty (macOS) to the Fleet maintained apps catalog
- Input: `ee/maintained-apps/inputs/homebrew/kitty.json`
- Output generated via ingester script

## Validation checklist

- [ ] App can be downloaded using manifest URL
- [ ] App installs successfully using manifest install script
- [ ] App exists in software inventory after install
- [ ] App uninstalls successfully using manifest uninstall script

🔍 Note: @ mention #g-software Product Designer in a comment pointing to
the new icon once added.
2026-03-23 12:15:07 -05:00
Scott Gress 8ea6f338de Pin Localstack version (#42253)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42252 

Pins the Localstack image to the last-known-good version (4.5) before
they 🔪 'd the community edition and started requiring an auth token. I
also added a "wait for localstack" as an initial debugging step, and
left it in to catch similar future issues. It's probably redundant since
there likely _is_ no future for Fleet and Localstack beyond this, but it
take milliseconds and would catch any other weird Localstack failures
so, why not.
2026-03-23 12:11:55 -05:00
kilo-code-bot[bot] 879fb4a10a Update e-group meeting to 2-hour weekly with expanded attendee list (#42153) 2026-03-23 11:43:56 -05:00
e1fc1b08a8 Update modal 'Done' buttons to say 'Close' (#41751)
## Summary

- Changed all modal "Done" dismiss/close button labels to "Close" across
48 frontend component files
- Updated instructional text in `AutoEnrollMdmModal` that referenced the
"Done" button to say "Close" instead
- Updated 7 test files to assert "Close" instead of "Done" for modal
button names

## Excluded (intentionally not changed)

- `LiveResultsHeading.tsx` — "Done" button is a page-level navigation
action, not a modal dismiss
- `AddAbmModal.tsx` — Instructional text referencing Apple Business
Manager's "Done" button
- `Calendars.tsx` — Instructional text referencing Google Calendar's
"Done" button
- `ModalFooter.stories.tsx` — Storybook demo example

Built for
[Mel](https://fleetdm.slack.com/archives/D0AKX7DJFCN/p1773674157011109?thread_ts=1773673149.649299&cid=D0AKX7DJFCN)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: melpike <mel@fleetdm.com>
Co-authored-by: melpike <79950145+melpike@users.noreply.github.com>
2026-03-23 09:59:18 -06:00
melpike f020aaa66d Update UI to reflect enrollment behavior (#42105)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41921
2026-03-23 09:54:35 -06:00
kilo-code-bot[bot]andkiloconnect[bot] a1ac4f4f88 Handbook: Add responsibility for LinkedIn ad creative management (#42213)
## Summary

- Adds a new "Manage LinkedIn ad creatives" responsibility to the
marketing handbook (`handbook/marketing/README.md`), placed after the
existing "Promote a post on LinkedIn" section.
- Documents the process for creating new ad creatives and boosted posts
inside the "Targeting experiments" campaign group with date-prefix
naming and lifetime budgets, and the criteria for promoting successful
creatives to evergreen awareness campaigns.
- Explains the reasoning: LinkedIn's campaign manager UI does not allow
true deletion of old/failed creatives from evergreen campaigns, which
clutters performance data.

**Context:**
https://fleetdm.slack.com/archives/D09Q0HUBSET/p1774045050069349

---

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

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-03-23 10:47:29 -05:00
Scott Gress deec6aa904 Add "exceptions" GitOps config (#42013)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42008 

# Details

Step one in https://github.com/fleetdm/fleet/issues/40171. 

This PR adds a new `exceptions` subsection to the current GitOps config,
with boolean keys for software, secrets and labels. For existing
instances a migration is included to set labels and secrets to `true`.
For new instances, only `secrets` will be `true`.

# 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.
n/a, will put changelog in when more functionality is implemented.

## Testing

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

(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] ran migration and verified that app config had `gitops.exceptions`
with `software: false, secrets: true, labels: true`
- [X] created a new instance and verified that that app config had
`gitops.exceptions` with `software: false, secrets: true, labels: false`
- [X] verified that the PATCH /config API works and can update
exceptions independently of other config

## Database migrations

- [X] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
n/a
- [X] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
n/a
- [X] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
n/a

## New Fleet configuration settings

- [X] Setting(s) is/are explicitly excluded from GitOps
these will not be set in GitOps, since they're _about_ how GitOps works.

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

## Summary by CodeRabbit

## Release Notes

* **New Features**
* GitOps configuration now supports exception settings for granular
resource control. Administrators can configure which specific resource
types (labels, software, and secrets) are included in or excluded from
GitOps mode operations.

* **Improvements**
* Improved GitOps configuration handling to preserve exception settings
during partial updates and system migrations.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-03-23 10:47:17 -05:00
Victor Lyuboslavsky 7a6a95703f Reduced redundant database calls in the osquery distributed query results hot path (#42157)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42156

The core change: instead of loading AppConfig, HostFeatures,
TeamMDMConfig, and rebuilding the detail query map **independently
inside each call** to `directIngestDetailQuery` and `ingestDetailQuery`
(so ~2N times per check-in with N detail results), we load everything
**once** into a `hostDetailQueryConfig` struct and pass it through.

## Before

```
SubmitDistributedQueryResults loop:
  for each query result:
    → ingestQueryResults
      → directIngestDetailQuery:  loads AppConfig, HostFeatures, TeamMDMConfig, builds detail query map
      → ingestDetailQuery:        loads AppConfig, HostFeatures, TeamMDMConfig, builds detail query map
  after loop:
    loads AppConfig for labels/policies
    loads AppConfig AGAIN for deferred host save
```

## After

```
SubmitDistributedQueryResults loop:
  on first detail query result:
    → loadHostDetailQueryConfig: loads AppConfig, HostFeatures, TeamMDMConfig, builds detail query map ONCE
  for each query result:
    → ingestQueryResults (receives pre-loaded config)
      → directIngestDetailQuery: just looks up the query in the cached map
      → ingestDetailQuery:       just looks up the query in the cached map
  after loop:
    loads AppConfig once for labels/policies/deferred host save
```

The detail config is **lazy-loaded** — if a check-in only has
label/policy results and no detail queries, the
HostFeatures/TeamMDMConfig calls are skipped entirely.

## Other changes bundled in

1. **`serialUpdateHost`** now receives the request context and uses
`context.WithoutCancel(ctx)` instead of `context.Background()`, so the
background goroutine preserves OTEL traces and logging context without
being subject to request cancellation.

2. **Deferred save host** at the end of `SubmitDistributedQueryResults`
reuses the already-loaded AppConfig instead of loading it a third time.
The old code silently skipped the host save if that third load failed.


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

## Testing

- [x] QA'd all new/changed functionality manually
  - Ran a local load test with osquery perf

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

## Summary by CodeRabbit

* **Performance**
* Optimized distributed query result processing by preloading
configuration once per request instead of repeatedly per query result,
reducing redundant database calls and improving overall query
performance.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-03-23 10:31:12 -05:00