Commit Graph
22062 Commits
Author SHA1 Message Date
Ian Littman 7e73c89e5e Bump Storybook to resolve dependency vulns (#40863) 2026-03-03 11:30:21 -06:00
Jake Stenger 15567efdae Clarifying text for ndes_scep_proxy that it's for dynamic SCEP (#40742)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #34521

# Checklist for submitter

- [x] QA'd all new/changed functionality manually
2026-03-03 08:54:26 -08:00
Claudeandiansltx cba11a8750 Upgrade serialize-javascript to 7.0.3 (#40781)
From @iansltx: The below works because serialize-javascript v7's "BC
break" is requiring a newer version of Node, but we're well above that
version (20) already. There are no other BC breaks per release notes so
a resolution/override is safe here.

This is a transitive dependency of a dev dependency, so we don't need to
rush out a release for this change.

---

Upgrades the transitive dependency `serialize-javascript` from 6.0.2 to
7.0.3 across all package ecosystems in the repository.

## Changes

- Added yarn resolution `**/serialize-javascript: ^7.0.3` in root
`package.json`
- Added npm override `serialize-javascript: ^7.0.3` in
`ee/fleetd-chrome/package.json`
- Updated `yarn.lock` and `ee/fleetd-chrome/package-lock.json` to
resolve to version 7.0.3

The upgrade uses package manager resolution features since parent
dependencies (`webpack`, `terser-webpack-plugin`, `copy-webpack-plugin`)
still specify 6.x in their own dependencies.

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

## Summary by CodeRabbit

* **Chores**
* Pinned serialize-javascript dependency to version ^7.0.3 in project
configurations.

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

---------

Co-authored-by: anthropic-code-agent[bot] <242468646+Claude@users.noreply.github.com>
Co-authored-by: iansltx <472804+iansltx@users.noreply.github.com>
2026-03-03 10:51:41 -06:00
RachelElysia af9f48eeb1 Fleet UI: Add changes to include google playstore web apps (#40716) 2026-03-03 11:21:56 -05:00
RachelElysia a1c9115ef0 Fleet UI: Pull platform from url param (#40818) 2026-03-03 11:20:28 -05:00
George KarrandIan Littman 4241585c31 Adding changes for Fleet v4.81.1 (#40705)
Co-authored-by: Ian Littman <iansltx@gmail.com>
2026-03-03 10:01:15 -06:00
Brock Walters 6e882309a7 Update how-we-deployed-santa-at-fleet.md (#40733)
Fixed title :)
2026-03-03 09:57:40 -06:00
Mike McNeilandAllen Houchins 2d78ca611a [merge after testing backwards compat.] Dogfood: teams => "fleets" and queries => "reports" (#39383)
Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com>
2026-03-03 09:41:56 -06:00
Noah Talerman 9bf5395e12 Enroll secrets modal: Update copy for "All fleets" and "Unassigned" (#40572)
For the following quick win:
- https://github.com/fleetdm/fleet/issues/40590
2026-03-03 09:41:23 -06:00
Noah Talerman 75215164d1 Add/edit report: Differential callout grey instead of purple (#40746)
Purge the purple!
2026-03-03 09:41:08 -06:00
Noah Talerman aeeb28e14f Settings > Agent options: Improve copy (#40817)
- Add purge the purple!

Context:
https://fleetdm.slack.com/archives/C0ACJ8L1FD0/p1772460008632749
2026-03-03 09:40:54 -06:00
Martin Angers 53c48dea51 Website: implement android proxy endpoint for create webapp (#40059) 2026-03-03 08:23:19 -05:00
Victor Lyuboslavsky a0581a33cc Converted old activity module into function. Cleaned up activity types. (#40752)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38536

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

* **Refactor**
* Reorganized internal activity tracking infrastructure across services
to improve code maintainability and reduce complexity.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-03-03 01:01:42 -06:00
Scott Gress 2c56b89072 Support globs in script paths in GitOps (#40799)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40302

# Details

This PR adds support for a `paths:` key for scripts declared under
`controls:` in a GitOps fleet file. If supplied, `paths:` must contain a
"glob" expression (as [supported by the doublestar
package](https://github.com/bmatcuk/doublestar?tab=readme-ov-file#patterns)).
The existing `path:` key still works but may not contain glob
expressions. When a `paths:` key is encountered, we expand it and add
all matching valid (as in, `.sh` or `.ps1`) files to the set of script
files to process.

Subsequent PRs will add this functionality to other entities that use
`path:` (such as reports and policies).

# 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
Tried with various combinations of `*` and `**` in gitops runs, and
mixing of `path:` and `paths:`
2026-03-02 22:18:36 -06:00
Mike McNeil 7064e4356a Docs: Add link to ADE profile reference (#40836) 2026-03-02 22:07:09 -06:00
Savannah Friend 3a1ded0251 Document steps for archiving a Slack channel (#40839) 2026-03-02 22:06:36 -06:00
Victor Lyuboslavskyandjacobshandling 14704af737 Modified Android certificate renewal logic to make it easier to test. (#40635)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40284 

Following existing codebase pattern of passing the NOW time to the
method.


# 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
  - Via manipulating DB.

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

## Summary by CodeRabbit

* **Chores**
* Enhanced Android certificate renewal system with improved
time-handling capabilities and better testability infrastructure for
certificate template operations.

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

---------

Co-authored-by: jacobshandling <61553566+jacobshandling@users.noreply.github.com>
2026-03-02 16:25:48 -08:00
Luke Heath efe35464d5 Add RC version of gitops workflow (#40838) 2026-03-02 17:46:13 -06:00
Eric 48029fa29f Website: Update redirects in basic article view action. (#40833)
Changes:
- Updated the behavior of the view-basic-article action to fix redirects
for article URLs with upper case letters.
2026-03-02 17:31:33 -05:00
RachelElysia e81f4189da Fleet UI: Hide native input, don't remove edit from non-FMA flow (#40825) 2026-03-02 17:16:53 -05:00
Steven Palmesano 4a5e22137f Add fleetd debug script for Windows (#40831)
Also rename the macOS script for consistency.
2026-03-02 15:41:25 -06:00
Victor Lyuboslavsky a08f3aeae5 Update Android RELEASE.md (#40708) 2026-03-02 15:32:39 -06:00
Katheryn Satterlee 29451ffb87 Update manage-orbit-debug.sh by removing instructions (#40426)
Removed instructions that were added for a specific usecase.
2026-03-02 15:00:14 -06:00
Magnus Jensen 861d0ee122 don't allow manual_agent_install without bootstrap package (#40812)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38432

# 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-02 15:25:46 -05:00
Martin Angers 22d5498f2e Android WebApps: endpoint to create one, prevent android app configuration on webApps (#40329) 2026-03-02 15:14:19 -05:00
Brock Walters a52ae1de52 Update the-confidence-gap.md (#40673)
fixed links added block quotes
2026-03-02 14:10:45 -06:00
Brock Walters a643cd4dd0 Update migrate-fleet-server.md (#40777)
Added link to Steven's article.
2026-03-02 15:08:24 -05:00
Brock Walters 31478b92c3 Update marketing-assets.md (#40824)
output from automation looking at articles dir in Fleet repo sorted in
reverse chronological order.
2026-03-02 14:01:38 -06:00
Nico da8a178aa2 Fix caching issues on Labels and Software name edits (#40815)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40807, Resolves #40811

More context:
https://fleetdm.slack.com/archives/C019WG4GH0A/p1772470201453599?thread_ts=1772118969.698539&cid=C019WG4GH0A

## Testing

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



https://github.com/user-attachments/assets/10b07dcc-1048-4aff-aba9-f99abc4631e5



https://github.com/user-attachments/assets/19584e58-c4e6-4869-bc93-97f7d0b01941



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

- [x] Confirmed that the fix is not expected to adversely impact load
test results
- [ ] Alerted the release DRI if additional load testing is needed
2026-03-02 16:38:52 -03:00
Noah Talerman 0cc6f6e0d5 Images for articles go in website/assets/images/articles (#40413) 2026-03-02 13:44:07 -05:00
Noah Talerman 3bd0d5354d Evented tables guide: How to turn on (#40429)
- Reorganize sections: How to turn on comes first
- Make language consistent

Context:
https://fleetdm.slack.com/archives/C050XE4CQNA/p1771903295859949
2026-03-02 13:43:56 -05:00
6a41c47558 Fix flaky test in EditLabelPage.tests.tsx (#40782)
Fixed intermittent test failure in `EditLabelPage › renders the
ManualLabelForm when the label is manual` caused by redundant assertions
after async queries.

## Changes

- Removed redundant `toBeInTheDocument()` assertions after
`findByText()` calls in the manual label test
- `findByText()` already asserts element presence when it resolves;
storing the result and asserting again created a race condition

**Before:**
```typescript
const host1 = await screen.findByText("Test host #1");
expect(host1).toBeInTheDocument();
```

**After:**
```typescript
await screen.findByText("Test host #1");
```

# Checklist for submitter

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

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

## Summary by CodeRabbit

* **Tests**
* Refactored test assertions to use implicit presence validation instead
of explicit checks, improving test code maintainability without
affecting functionality.

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

---------

Co-authored-by: anthropic-code-agent[bot] <242468646+Claude@users.noreply.github.com>
Co-authored-by: iansltx <472804+iansltx@users.noreply.github.com>
Co-authored-by: Ian Littman <iansltx@gmail.com>
2026-03-02 12:31:12 -06:00
Luke Heath 6981a740bc Update story template to remove QA header (#40814) 2026-03-02 11:17:24 -06:00
Jordan Montgomery c63edd4915 Add lock end user info migrations, API support and AccountConfiguration command updates (#40551)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40183 and #40182

# 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


## Database migrations

- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [x] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
2026-03-02 12:16:31 -05:00
Nico c586ce4819 Fix attempt for TestFleetDesktopSettingsBrowserAlternativeHost flaky test (#40793)
Attempting to fix race conditions for this test:

Go tests result: failure
https://github.com/fleetdm/fleet/actions/runs/22561475775
Summary:FAIL: TestIntegrationsEnterpriseGitops (352.91s)
FAIL:
TestIntegrationsEnterpriseGitops/TestFleetDesktopSettingsBrowserAlternativeHost
(6.64s)
FAIL:
TestIntegrationsEnterpriseGitops/TestFleetDesktopSettingsBrowserAlternativeHost/invalid_value
(0.31s)

And maybe also:

Go tests result: failure
https://github.com/fleetdm/fleet/actions/runs/22561475775
Summary:FAIL: TestIntegrationsEnterprise (273.17s)
FAIL: TestIntegrationsEnterprise/TestAllSoftwareTitles (2.07s)
FAIL: TestIntegrationsEnterprise/TestAppConfigOktaConditionalAccess
(0.89s)
FAIL:
TestIntegrationsEnterprise/TestFleetDesktopSettingsAlternativeBrowserHostURL
(0.24s)
FAIL: TestIntegrationsEnterprise/TestGitOpsModeConfig (0.28s)

Go tests result: failure
https://github.com/fleetdm/fleet/actions/runs/22561475775
Summary:FAIL: TestIntegrationsMDM (506.39s)
FAIL: TestIntegrationsMDM/TestAppConfigMDMCustomSettings (0.54s)
FAIL: TestIntegrationsMDM/TestAppConfigMDMMacOSMigration (0.45s)
FAIL: TestIntegrationsMDM/TestAppConfigWindowsMDM (2.29s)
FAIL: TestIntegrationsMDM/TestAppleConfigSecretVariablesUpload (0.46s)

Per GPT:

```
Root cause                                                           
                                                                       
  Within a single test (e.g.                                           
  TestFleetDesktopSettingsAlternativeBrowserHostURL), the test makes an
   API request that returns an InvalidArgumentError. When encoding the 
  error response, EncodeError() does two things in sequence            
  (server/platform/endpointer/transport_error.go:78-88):               

  1. Calls ctxerr.Handle() which sends the error object to the error
  store's background goroutine via a channel
  2. Calls UUID() on the same error object, which lazily writes the
  uuid field (server/platform/http/errors.go:55)

  Meanwhile, the error store background goroutine (started once during
  SetupSuite) picks up that same error object from the channel and
  calls MarshalJSON() → InvalidArgumentError.Error()
  (server/contexts/ctxerr/ctxerr.go:244). Since Error() was a value
  receiver, Go copies the entire struct to call it, inadvertently
  reading the uuid field while step 2 is writing it.

  Two goroutines, same error object, no synchronization — that's the
  race.

  Fix

  - Changed InvalidArgumentError.Error() from value receiver to pointer
   receiver — eliminates the struct copy, so the uuid field is never
  read concurrently with the write
  - Changed InvalidArgumentError.WithStatus() to return a pointer to
  invalidArgWithStatusError, since it embeds InvalidArgumentError and
  needs a pointer to satisfy the error interface
  - Changed profile_matcher.go to pass &invArg instead of invArg to
  ctxerr.Wrap() — the only place in the codebase where
  InvalidArgumentError was used as a value rather than a pointer
```
2026-03-02 13:57:34 -03:00
Magnus Jensen 36c81a496b Show Windows support for SCEP Renewal ID variable (#40803) 2026-03-02 11:42:25 -05:00
melpike f8239c5b62 Document fleet_allow_bootstrap_package_during_migration (#40810)
Add documentation for enabling bootstrap packages during MDM migration.

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #39634
2026-03-02 10:39:35 -06:00
dependabot[bot] 6070f19940 Bump minimatch from 3.1.2 to 3.1.5 in /ee/fleetd-chrome (#40804) 2026-03-02 10:34:01 -06:00
Tim Lee 8b6fc49039 Decrease last opened time diff (#40506) 2026-03-02 09:18:30 -07:00
Ashish Kuthiala 2dbd9ab5dc Update README.md (#40808) 2026-03-02 10:07:01 -06:00
Claudeandiansltx 7da52041d6 Fix data race in TestSoftwareInstallerUploadRetries (#40784)
## Description

Fixed race condition in `TestSoftwareInstallerUploadRetries` where the
`status` variable was accessed concurrently by two closures without
synchronization, causing intermittent test failures in scheduled CI runs
with race detection enabled.

**Changes:**
- Added `sync.Mutex` to protect concurrent access to `status` variable
- Synchronized reads in `kvStore.GetFunc` closure (line 563)
- Synchronized writes in `installerStore.onPut` closure (line 568)

```go
var statusMu sync.Mutex
status := fleet.BatchSetSoftwareInstallersStatusProcessing
kvStore.GetFunc = func(ctx context.Context, key string) (*string, error) {
    statusMu.Lock()
    defer statusMu.Unlock()
    return ptr.String(status), nil
}

installerStore.onPut = func() {
    statusMu.Lock()
    defer statusMu.Unlock()
    status = fleet.BatchSetSoftwareInstallersStatusFailed + ":"
}
```

# Checklist for submitter

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

---------

Co-authored-by: anthropic-code-agent[bot] <242468646+Claude@users.noreply.github.com>
Co-authored-by: iansltx <472804+iansltx@users.noreply.github.com>
2026-03-02 10:04:59 -06:00
Ian LittmanandScott Gress 1a7ef2a41e Remove mention of down migrations in go-reviewer agent doc, narrow .fleet permissions (#40666)
We don't do down migrations.

---------

Co-authored-by: Scott Gress <scottmgress@gmail.com>
2026-03-02 10:03:55 -06:00
Harrison Ravazzolo 07047bec17 Clarify BYOD enrollment methods in Fleet documentation (#40740)
Updated the BYOD enrollment section to clarify that both profile-based
and account-driven enrollment methods are supported in Fleet, and added
a link to a guide for more information.
2026-03-02 07:58:15 -08:00
Ian Littman 5a54ab7af7 Bump Trivy version to one that's still downloadable (#40778) 2026-03-02 09:50:14 -06:00
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