Commit Graph
24222 Commits
Author SHA1 Message Date
fleet-releaseandallenhouchins 957089f950 Update Fleet-maintained apps (#45225)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
  * Updated TablePlus (macOS) to version 6.9.2
  * Updated Telegram Desktop (Windows) to version 6.8.2
  * Updated Warp (macOS) to version 0.2026.05.06.15.42.04

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45225)

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-05-12 08:58:27 -05:00
Rajendra kadam ace3804086 Add tests for serve.go pure helpers (#33370) (#44929)
First PR in the staged plan from
[#33370](https://github.com/fleetdm/fleet/issues/33370#issuecomment-4394807680).
Adds unit tests for several testable helpers in `cmd/fleet/serve.go` —
argument stringification, TLS profile config, license initialization,
and the missing-migrations warning.

The migrations-warning test required threading `io.Writer` through
`printMissingMigrationsWarning` so it can pass `*bytes.Buffer` instead
of mutating `os.Stdout`. The other two database-state print functions
stay as-is since they aren't tested in this PR.

**Related issue:** Part of #33370 (intentionally not using auto-close
keywords since this is the first of multiple PRs against this issue).

# Checklist for submitter

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

## Testing

- [x] Added/updated automated tests

## Database migrations

_N/A — no database migrations in this PR._

## New Fleet configuration settings

_N/A — no new configuration settings._

## fleetd/orbit/Fleet Desktop

_N/A — no agent code changes._
2026-05-12 08:57:10 -05:00
Noah Talerman 29a0b6dd97 Add "quick start" for GitOps and remove links to archived fleet-gitops repo (#45028)
- @noahtalerman: We archived the fleetdm-gitops repo:
https://github.com/fleetdm/fleet/issues/40300
- Update links across docs/guides to point to GitOps reference instead
2026-05-12 09:17:51 -04:00
Magnus Jensen 2935856f37 validate apple payload scope conflict, and unknown variable use in dry-run (#45139)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #44456 

# 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.
- [x] Timeouts are implemented and retries are limited to avoid infinite
loops
- [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] QA'd all new/changed functionality manually

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

* **Bug Fixes**
* Dry-run now performs Apple config profile payload scope conflict
validation and reports unknown Fleet variables for all profile types
before completing.

* **Tests**
* Added tests covering Apple config profile scope-conflict validation
and dry-run/batch profile workflows to ensure conflicts are detected in
both dry-run and live flows.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45139)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-12 08:51:30 +02:00
fleet-releaseandallenhouchins 483148c9e6 Update Fleet-maintained apps (#45209)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated ChatGPT Atlas macOS package metadata with new version and
installer information
* Updated Cloudflare WARP macOS package metadata with new version and
installation scripts
* Updated Discord Windows package metadata with new version and
installer information
  * Updated OpenVPN Connect macOS installation script configuration
* Updated pgAdmin4 macOS package metadata with new version and installer
information

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45209)

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-05-11 22:31:07 -05:00
Allen Houchins a6d609ec76 Add OpenVPN Connect as a macOS FMA (#45174)
Add OpenVPN Connect to maintained apps: create a Homebrew input manifest
and add an apps.json entry. Add a darwin output with version 3.8.1
(installer URL, sha256) plus install/uninstall script refs that handle
quitting/relaunching and cleanup. Add frontend icon component and
register it in the icon map, and include the app icon asset. Default
category set to Productivity.
2026-05-11 22:18:25 -05:00
Noah Talerman 6013f13317 Update SSO rate limit best practice explanation (#45086)
Why 3 times?
https://fleetdm.slack.com/archives/C0891RE11SP/p1777487823394629
2026-05-11 19:19:38 -05:00
Jorge Falcon a1bc87d325 Dogfood database clone refresh (#45199) 2026-05-11 20:07:29 -04:00
Eric 93e3cc4fff Website: update homepage hero and header styles (#45198)
Closes: https://github.com/fleetdm/fleet/issues/45126
Closes: https://github.com/fleetdm/fleet/issues/45128

Changes:
- Updated the styles and layout of the homepage hero to match the latest
wireframes
- Removed the box-shadow from the website masthead and added a bottom
border.
- Added a new variable to colors.less `@core-fleet-black-5`

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

* **Style**
* Redesigned homepage hero layout and typography for improved responsive
behavior across desktop, tablet, and mobile.
* Reorganized quote and statistics into a unified responsive block with
updated spacing, padding, and stacking.
* Adjusted hero background sizing and hero-area height/padding for small
screens.
  * Updated hero subtitle wording for clarity.
  * Refined header bottom color and removed header shadow.
  * Added a subtle new color token to the site palette.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45198)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 18:42:25 -05:00
Jonathan Katz e942e06032 Oncall doc update: software updates (#44943)
Oncall documentation update. The diff looks a bit weird so I would
recommend just viewing the whole file.
2026-05-11 16:58:32 -04:00
RachelElysia 8d1310c805 FE: Lint cleanup VII (#45135) 2026-05-11 16:29:25 -04:00
Nico b0dc97006c Dedupe network errors so usage_statistics cron stops failing (#45142)
**Related issue:** Resolves #42613

Dedupes errors that report HTTP 408 (request timeouts). As of now, I
believe this only fires for timeouts on the
**/api/v1/osquery/distributed/write** endpoint.
This is so that we have a unique error hash with an incrementing count,
instead of thousands of entries each with count: 1, which produces a
huge JSON payload when passed to
https://fleetdm.com/api/v1/webhooks/receive-usage-analytics for
processing.

Trade-off:
- Before: every occurrence got its own Redis entry so thousands of
near-identical examples coexisted.
- After: they collapse into one entry whose :json value still contains a
representative example, but we'd only keep the last IP+Port instead of
all of them.

# 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

- [x] Added/updated automated tests

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

Build a ~5 MB JSON body in a temporary file:

```bash
{ printf '{"node_key":"'; head -c 5000000 /dev/zero | tr '\0' 'x'; printf '"}'; } > /tmp/distwrite-body.json
```

Clear out redis:

```bash
docker exec fleet-redis-1 redis-cli FLUSHDB
```

Send a dummy request and throttle the upload at 100 KB/s → ~50s to send,
read timeout fires at 25s.
I sent this 3 times and got the "request body read error" error back
after each request.

```bash
curl -sk --limit-rate 100K -X POST -H 'Content-Type: application/json' --data-binary @/tmp/distwrite-body.json https://127.0.0.1:8080/api/v1/osquery/distributed/write

{
  "error": "request body read error: i/o timeout",
  "uuid": "95937f50-1008-4625-9423-bc19c7be6818"
}
```

Count the error keys containing "request body read error" as the value. 

```bash
docker exec fleet-redis-1 sh -c 'for k in $(redis-cli --scan --pattern "error:*:json"); do v=$(redis-cli GET "$k"); echo "$v" | grep -q "request body read error" && echo "$k count=$(redis-cli GET "${k%:json}:count")"; done'\

error:{Cco_JmAdBVVVJI9k0XjNNUCmG0z1IKguMQD4VDaejfc=}:json count=3
```

Notice the single entry and count=3 (since I ran the dummy request 3
times).

Running this on main outputs three entries each with count=1.


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

## Summary by CodeRabbit

* **Bug Fixes**
* Network error deduplication for request-timeout errors now normalizes
socket addresses, preventing the usage statistics cron from failing when
many similar network errors accumulate.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45142)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 22:21:57 +02:00
Allen Houchins 49993af29e Update Okta Verify policy resolution and install flag (#45185)
Clarify the user-facing resolution to instruct users to install Okta
Verify from Self-service, click Refetch, and contact #help-it if issues
persist. Also enable automatic installation by changing install_software
to true so Fleet can install the managed app when needed.
2026-05-11 15:20:38 -05:00
fleet-releaseandallenhouchins e03b740e59 Update Fleet-maintained apps (#45171)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
  * Updated Docker Desktop macOS from version 4.72.0 to 4.73.0
  * Updated Loom macOS from version 0.346.4 to 0.347.4

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45171)

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-05-11 15:00:07 -05:00
Victor Lyuboslavsky 89bbda0577 Improve error handling in create-admin-user.ps1 script (#45176)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #45160

Issue and fix: https://www.youtube.com/watch?v=Ow9GAFedEnQ

# 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

## Release Notes

* **Bug Fixes**
* Enhanced error handling in the admin user creation process to ensure
immediate failure on errors, preventing incomplete operations during
user account creation or group membership assignment.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45176)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 14:59:52 -05:00
github-actions[bot]andlucasmrod d6e89babbd Update versions of fleetd components in Fleet's TUF [automated] (#45187)
Automated change from [GitHub
action](https://github.com/fleetdm/fleet/actions/workflows/fleetd-tuf.yml).

Co-authored-by: lucasmrod <lucasmrod@users.noreply.github.com>
2026-05-11 16:57:16 -03:00
Victor Lyuboslavsky 1213e5da12 Fixed validation that rejected enabling end user authentication on Fleet deployments without Apple MDM configured (#45162)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #44801 

Note there is a related bug:
https://github.com/fleetdm/fleet/issues/45170

# 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


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

## Summary by CodeRabbit

* **Bug Fixes**
* End user authentication can now be enabled for Windows-only and
Linux-only fleets without requiring macOS MDM configuration.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45162)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 14:55:16 -05:00
Luke Heath b5da9aa980 Style fixes: label form, empty-state spacing, registration dark mode (#45080) 2026-05-11 14:17:00 -05:00
Scott Gress fe16654729 Allow glob literals in filenames (#44547)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #43598

# 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
- [X] added a script file `some-*-script[].sh` and referred to it in a
gitops file using `path:`. Failed on main; on this branch it
successfully uploaded the script
- [X] still got expected error message when using `path: ` with a value
that had glob characters that _didn't_ match an actual file
- [X] `paths:` still worked and uploaded multiple files, including
`some-*-script[].sh`


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

* **Bug Fixes**
* Fixed path validation in fleetctl gitops so path values containing
glob metacharacters (e.g., brackets, asterisks, question marks) are
accepted when a literal file with that name exists on disk; missing
files still produce the appropriate error.

* **Tests**
* Added regression tests covering glob metacharacter handling in path
validation.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/44547)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 13:49:31 -05:00
Scott Gressandcoderabbitai[bot] c7364d555c Officially deprecated setup_experience.software (#44549)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42503

# 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
- [X] setting `software:` under `macos_setup` or `setup_experience`
triggers the expected warning.


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

* **Deprecations**
* Using setup_experience.software or macos_setup.software now emits a
deprecation warning. Migrate by setting setup_experience: true on
individual software items (packages, App Store apps, or fleet-maintained
apps).

* **Tests**
* Added test coverage to verify the deprecation warning is emitted when
applicable and absent otherwise.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/44549)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-05-11 13:49:11 -05:00
Scott Gress 348fa47c84 Improve name key validation in GitOps (#44553)
<!-- 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.

- [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
  - [X] omitted `name:` from a file without `org_settings:`, got:
```
	* No `name` was provided in /tmp/testback/fleets/third-fleet.yml. If this file is intended to define org-level settings, add `org_settings:` as a top-level key. Otherwise, use `name` to specify the fleet name.
```
  - [X] omitted `name:` from a file with `org_settings:`, got no error.
  - [X] omitted `name:` from `no-team.yml`, got:
```
	* `name` must be `No Team` for `no-team.yml`
```
  - [X] omitted `name:` from `unassigned.yml`, got:
```
	* `name` must be `Unassigned` for `unassigned.yml`
```


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

## Summary by CodeRabbit

* **Bug Fixes**
* Improved error messages when GitOps YAML files omit the required
`name` field, with specific remediation guidance tailored to each
configuration file type
* Enhanced validation error messaging when top-level `org_settings` is
missing or incorrectly placed, providing clearer instructions on
required YAML structure

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 13:49:02 -05:00
Scott Gress 8b779110a8 Remove verb and url from gitops errors (#44555)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #43721 

# 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
Added a Google Calendar integration to gitops .yml with `client_email`
missing from the `api_json_key`.
  - [X] on main, got error: 

```
Error: applying fleet config: PATCH /api/latest/fleet/config received status 422 Validation Failed: client_email is required (API time: 13ms)
```

  - [X] on this branch, got:

```
Error: applying fleet config: Validation Failed: client_email is required (API time: 134ms)
```



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

* **Bug Fixes**
* Cleaner CLI error messages: removed extraneous HTTP path/status-code
details from GitOps-related errors, making output easier to read.

* **Tests**
* Added tests to verify the improved error message handling and
nil/non-wrapped error behavior.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/44555)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 13:48:52 -05:00
f5c59ae3b4 Fix google calendar key validation (#44556)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42886 

# 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
- [X] gitops run with extra keys (besides `client_email` and
`private_key` in `api_key_json` fails on main, passes on this branch
- [X] gitops run with missing `client_email` or `private_key` in
`api_key_json` still fails gitops (including dry run)
- [X] gitops run with extra keys sibling to api_key_json still fails as
expected



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

* **Bug Fixes**
* Corrected GitOps validation so Google Calendar API key JSON no longer
rejects valid nested keys; required-field validation for the integration
still enforced.
* **Tests**
* Added test coverage to ensure nested unknown keys are accepted while
sibling-level unknown fields are reported as validation errors.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/44556)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Tim Lee <timlee@fleetdm.com>
2026-05-11 13:41:28 -05:00
fleet-releaseandallenhouchins c6407f9d24 Update Fleet-maintained apps (#45168)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated Inkscape 1.4.4 installer package information to point to the
latest available version.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45168)

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-05-11 13:26:40 -05:00
fleet-releaseandallenhouchins 8aa517ceea Update Fleet-maintained apps (#45158)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated Notepad++ to version 8.9.5 with corresponding installer and
checksum updates.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45158)

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-05-11 12:56:58 -05:00
Noah Talerman 7e555174e5 SSO guide: Okta's new Fleet app (#45082)
<img width="618" height="114" alt="Screenshot 2026-05-08 at 5 31 45 PM"
src="https://github.com/user-attachments/assets/795c47ae-f22d-45cd-bcc9-2a8afd791c78"
/>

<img width="891" height="147" alt="Screenshot 2026-05-08 at 5 32 00 PM"
src="https://github.com/user-attachments/assets/468a6ed4-1599-4e5d-9489-d4461216c6c2"
/>
2026-05-11 12:39:23 -05:00
dependabot[bot] 4ffeb3b69c Bump fast-uri from 3.1.0 to 3.1.2 in /tools/fleet-slackbot (#45083) 2026-05-11 12:38:55 -05:00
Eric c9690ca3d7 Website: update <code> styles on markdown article pages (#45161)
Related to: https://github.com/fleetdm/fleet/issues/42652

Changes:
- Updated the styles for `<code>` elements on Markdown article pages to
match handbook and documentation pages.
2026-05-11 12:23:55 -05:00
Magnus Jensen 42210d0a96 inconsistent alignment fleet premium (#45125)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #43646

<img width="809" height="149" alt="image"
src="https://github.com/user-attachments/assets/cf7b55ae-4d79-4686-a9e5-e9e68e4b2e65"
/>

<img width="851" height="190" alt="image"
src="https://github.com/user-attachments/assets/0c70a2b6-091c-4222-b9a9-c4d46f9b0f5b"
/>


# 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.
- [x] Timeouts are implemented and retries are limited to avoid infinite
loops
- [x] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes

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

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

## Summary by CodeRabbit

* **Bug Fixes**
* Fixed alignment inconsistency for premium feature messages in Fleet
settings. Premium notifications across Disk Encryption and Passwords
controls now display with proper alignment on Fleet Free tier.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45125)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 19:22:53 +02:00
dependabot[bot] 9476bc9fcd Bump github.com/go-git/go-git/v5 from 5.18.0 to 5.19.0 (#45146)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git)
from 5.18.0 to 5.19.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-git/go-git/releases">github.com/go-git/go-git/v5's
releases</a>.</em></p>
<blockquote>
<h2>v5.19.0</h2>
<h2>What's Changed</h2>
<ul>
<li>build: Update module github.com/go-git/go-git/v5 to v5.18.0
[SECURITY] (releases/v5.x) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2010">go-git/go-git#2010</a></li>
<li>v5: Bump sha1cd and go-billy by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2060">go-git/go-git#2060</a></li>
<li>v5: Align object encoding with upstream by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2065">go-git/go-git#2065</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-git/go-git/compare/v5.18.0...v5.19.0">https://github.com/go-git/go-git/compare/v5.18.0...v5.19.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-git/go-git/commit/bc930f4cbe095a3e1d49273655f73fcef7d41a42"><code>bc930f4</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2065">#2065</a>
from go-git/commit-v5</li>
<li><a
href="https://github.com/go-git/go-git/commit/d315264343cead712aa9eb56475c2ec96f5ecef1"><code>d315264</code></a>
plumbing: object, Reset object before decode</li>
<li><a
href="https://github.com/go-git/go-git/commit/6e1d34890a4dae8a0df738e531234bd60b7e9b66"><code>6e1d348</code></a>
plumbing: object, Align Tree handling with upstream</li>
<li><a
href="https://github.com/go-git/go-git/commit/e134ba34cf95ed0167e5b1df36a933d7bde9d02d"><code>e134ba3</code></a>
tests: Skip double checks in Git v2.11</li>
<li><a
href="https://github.com/go-git/go-git/commit/1971422f6b1bec9176061b3293306981cfff981e"><code>1971422</code></a>
tests: Add git conformance tests for signing verification</li>
<li><a
href="https://github.com/go-git/go-git/commit/a387aa8857a8fbba8e74b7f5485e9e030669ab5d"><code>a387aa8</code></a>
plumbing: object, Add ErrMalformedTag</li>
<li><a
href="https://github.com/go-git/go-git/commit/f415670d906b5c6169d1fdc64f3f9f1d33eb6f9c"><code>f415670</code></a>
plumbing: object, Decode Tag headers via a state machine</li>
<li><a
href="https://github.com/go-git/go-git/commit/5b0cd38a62e2336bb5f1a2ad0eb8ac8f9e7b740e"><code>5b0cd38</code></a>
plumbing: object, Reject multi-signature commits at Verify</li>
<li><a
href="https://github.com/go-git/go-git/commit/fe8ed6223a6079d9fd84d853362a996e7df175fb"><code>fe8ed62</code></a>
plumbing: object, Align Tag.EncodeWithoutSignature with Commit</li>
<li><a
href="https://github.com/go-git/go-git/commit/98e337d5bdc4c0536a40ab7381b2231f7e0b15cd"><code>98e337d</code></a>
plumbing: object, Add support for Tag.SignatureSHA256</li>
<li>Additional commits viewable in <a
href="https://github.com/go-git/go-git/compare/v5.18.0...v5.19.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-git/go-git/v5&package-manager=go_modules&previous-version=5.18.0&new-version=5.19.0)](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-05-11 14:18:44 -03:00
Allen Houchins d56aa7136e Move Safari report to macOS and remove mappings (#45153)
Relocate the Safari extensions report to a macOS-specific directory and
update the fleet manifest to reference the new path. Also clean up
report descriptions by removing embedded compliance/mapping lines from
multiple reports (Chromium, Firefox, listening ports, local user
accounts, USB devices, and Safari) — queries and report logic unchanged.
2026-05-11 11:44:08 -05:00
Eric c71bdbb570 Website: Add auto-patching to "What will you be using Fleet for?" question on "Talk to us" form (#45156)
Closes: https://github.com/fleetdm/fleet/issues/45155

Changes:
- Added auto-patching to the "What will you be using Fleet for?"
question on the contact page
- Included an auto-generated layout.ejs change
2026-05-11 11:42:32 -05:00
melpike a99b9d745e [Route] Update PSSO local account URL in routes (#45143)
Updated the URL for the PSSO local account guide to include the platform
SSO section.

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

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

## Summary by CodeRabbit

* **Bug Fixes**
* Improved navigation shortlink to direct users to a more specific
section on the setup guide page.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45143)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 09:32:28 -06:00
Noah Talerman 48796665e2 Dashboard widgets empty state font size (#45133)
- Use 16px as per Figma:
https://www.figma.com/design/mCPegRjoFdpMem1PLMF1BF/-41519----44591---43769-Dashboard-widgets?node-id=5665-14743&t=2qxb66rqk3J0eTld-1
2026-05-11 11:02:33 -04:00
Lucas Manuel Rodriguez c975e1353b Update desktop token even if fleet desktop is disabled (#45140)
Missing changes file for:
https://github.com/fleetdm/fleet/pull/39533/changes.

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

## Summary by CodeRabbit

* **Bug Fixes**
* Desktop security token rotation for identity verification now occurs
consistently, regardless of Fleet Desktop configuration status.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45140)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 11:52:35 -03:00
Nico 146f0c8589 LabelForm: replace 'teams' with 'fleets' (#44770)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
Ad-hoc issue detected when reviewing
https://github.com/fleetdm/fleet/pull/44410

Resolves: #45141 

# 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

- [x] Added/updated automated tests

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

### Before
<img width="993" height="603" alt="Screenshot 2026-05-05 at 9 35 13 PM"
src="https://github.com/user-attachments/assets/4c410c92-a44b-4018-b5a5-edba7b83e539"
/>

### After
<img width="982" height="569" alt="Screenshot 2026-05-05 at 9 50 26 PM"
src="https://github.com/user-attachments/assets/36d45053-5595-4758-b515-7a8c854a3986"
/>


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

* **UI Updates**
* Updated label form terminology to refer to "fleets" instead of "teams"
throughout the label management interface
* Modified field names, labels, and help text to use consistent
fleet-related language
* Updated copy on the Edit Label page to mention fleets when applicable
  * Streamlined form field layout for improved presentation

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/44770)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 16:50:49 +02:00
Juan Fernandez 7742c82eb7 Fix upcoming activity count not refreshing after host software install (#37012)
Resolves #37012

Invalidate the upcoming-activities cache on software install/uninstall.
2026-05-11 10:38:20 -04:00
Nico 714ae967fe Fix: SCIM user creation 500s when host already has a SCIM mapping (#44275)
**Related issue:** Resolves #43656

## Summary

When a new SCIM user is associated to a host that was previously
associated to another SCIM user (different username/email), we the
host_scim_user record is upserted with the new SCIM user's ID (instead
of 500ing).

# 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), 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] QA'd all new/changed functionality manually

Setup:

- Host associated with a SCIM user. I first enrolled a Linux host with
end user authentication enabled, and logged in with
**nico+testeua@fleetdm.com**. This creates a record in the
**mdm_idp_accounts** table.
- Provisioned the **nico+testeua@fleetdm.com** user from Okta to Fleet
by following this guide:
https://fleetdm.com/guides/foreign-vitals-map-idp-users-to-hosts#step-1-create-application-in-okta.
This creates records in **scim_users** and **host_scim_user** tables.

<img width="705" height="269" alt="Screenshot 2026-05-11 at 10 22 33 AM"
src="https://github.com/user-attachments/assets/1f1a03ee-494c-4b09-a020-fe38b73a6b0b"
/>

<img width="502" height="136" alt="Screenshot 2026-05-11 at 10 26 59 AM"
src="https://github.com/user-attachments/assets/42cd84d7-0a43-4937-90ed-0dbb0066ff32"
/>




#### Before (main branch)

- Changed **username** to **nico+test500main** and **email** to
**nico+test500main@fleetdm.com** on the **mdm_idp_accounts** record from
the setup.
- Replayed the **POST /api/v1/fleet/scim/Users** request from the Setup,
but modified **username** and **email** to
**nico+test500main@fleetdm.com**. This reproduced the 500.

<img width="1201" height="599" alt="Screenshot 2026-05-11 at 10 30
26 AM"
src="https://github.com/user-attachments/assets/abd4541a-b900-4171-9cee-03c7780045a0"
/>

#### After

Performed the same steps as above, now with **nico+test500**:

Request:
<img width="1235" height="708" alt="Screenshot 2026-05-11 at 10 26
42 AM"
src="https://github.com/user-attachments/assets/ef0fde5e-7b2f-48af-ac4b-ed2897a4e54b"
/>

UI:
<img width="697" height="294" alt="Screenshot 2026-05-11 at 10 27 46 AM"
src="https://github.com/user-attachments/assets/2c033f1c-483c-43c5-b901-d949a24a8a5a"
/>

DB: **scim_users** table contains both records and **host_scim_user**
mapping was updated to the new scim_user ID.
<img width="795" height="159" alt="Screenshot 2026-05-11 at 10 26 53 AM"
src="https://github.com/user-attachments/assets/73ecfcd7-d6be-4e47-90ea-760d5f6d6cc3"
/>
<img width="501" height="134" alt="Screenshot 2026-05-11 at 10 27 05 AM"
src="https://github.com/user-attachments/assets/a24140f9-070f-4236-b80d-910a21504efd"
/>



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

* **Bug Fixes**
* Fixed HTTP 500 errors on the SCIM Users endpoint when associating a
user with a host that already had an existing SCIM user mapping; host
mappings are now reassigned to the newly created SCIM user as needed.

* **Tests**
* Added a test ensuring creating a second SCIM user for the same host
succeeds and does not create duplicate host–user mappings.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/44275)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 16:28:46 +02:00
Sharon KatzandCopilot Autofix powered by AI 89517cce2f Warn when labels key appears in no-team/unassigned GitOps files (#44865)
Closes #42522

## Changes

When `labels:` appears in a no-team/unassigned GitOps file, log a
warning and skip label parsing. This matches the existing pattern used
by `agent_options` and `reports` in no-team files.

A warning (not an error) is used intentionally to avoid breaking
existing customer GitOps pipelines that may already have `labels:` in
their no-team file.

**After fix:**
```
[!] 'labels' is not supported in unassigned.yml. This key will be ignored.
```

## Testing

### Manual testing

Built `fleetctl` from the fixed branch against a local Fleet server
(premium license).

| Scenario | Result |
|---|---|
| `unassigned.yml` dry-run | Warning printed, succeeds |
| `unassigned.yml` real run | Warning printed, succeeds |
| `no-team.yml` dry-run | Warning printed, succeeds |
| `no-team.yml` real run | Warning printed, succeeds |
| `unassigned.yml` without labels | No warning, succeeds (no regression)
|

### Unit tests

- **`TestLabelsIgnoredInNoTeamFile`**: Sub-tests for both `no-team.yml`
and `unassigned.yml` assert: (1) no error, (2) `LabelsPresent` is true,
(3) no labels parsed, (4) warning logged.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-11 09:54:59 -04:00
Mike McNeil decdaf0726 Update contact.ejs CTA (#45136) 2026-05-11 08:49:03 -05:00
Scott GressandCopilot Autofix powered by AI 4daed869ad Add API param linter (#44045)
Adds a linter to ensure we don't add new instances of `team` or `query`
in API params. This will be used incrementally, but this PR also adds
`nolint` directives to places that still have these terms, both to avoid
false-positives later and to help with full migration away from these
terms in in Fleet 5.

Example:

```
server/fleet/campaigns.go:51:16: json tag "team_id": uses deprecated "team"/"teams" — use "fleet"/"fleets" instead (apiparamcheck)
        Team  *uint   `json:"team_id,omitempty"`
```

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

* **New Features**
* Added a new static analyzer (apiparamcheck) to flag deprecated API
parameter names ("team/teams") and improper usages of "query/queries".

* **Chores**
  * Integrated the new check into CI tooling and configuration.
  * Added analyzer tests and plugin registration.
* Applied targeted lint-suppression annotations across code and tests
where legacy parameter names must remain.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-11 08:46:02 -05:00
fleet-release 0f94afe29b Update Fleet-maintained apps (#45131) 2026-05-11 08:16:59 -05:00
Noah Talerman 74be1c0052 Dashboard charts: Tweak tooltips (#45079)
- Also add /learn-more link so we can update the link w/o a Fleet
release

Hosts online:
<img width="494" height="171" alt="Screenshot 2026-05-08 at 5 11 23 PM"
src="https://github.com/user-attachments/assets/98e355d0-2253-426b-851b-494f40ed6e31"
/>

Vulnerability exposure:
<img width="569" height="191" alt="Screenshot 2026-05-08 at 5 11 18 PM"
src="https://github.com/user-attachments/assets/c4d4a026-e365-4321-b79c-6e83581857cc"
/>


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

## Summary by CodeRabbit

* **New Features**
* Added a new learning resource link for vulnerability exposure (CVE)
dataset information.

* **Style**
* Updated tooltip link formatting and styling for improved presentation.
  * Minor formatting adjustments to dataset descriptions.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 08:49:23 -04:00
Lucas Manuel Rodriguez 04d773f10f Fix get policy by id endpoint and unify access in UI (#45048)
**Related issue:** Resolves
https://github.com/fleetdm/fleet/issues/44949.

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

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

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

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

* **Bug Fixes**
* Policy retrieval now correctly enforces team authorization, preventing
unauthorized cross-team access and ensuring team policies are returned
properly.

* **New Features**
* UI uses a unified policy access path for viewing/editing policies,
improving consistency for inherited/team-scoped policies,
back-navigation, and fleet-name display (All fleets / No team).

* **Tests**
* Added unit and integration tests covering cross-team access rules and
that policy automation fields are populated when policies are returned.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-11 09:39:52 -03:00
kilo-code-bot[bot]andkiloconnect[bot] b5cb2e235b Update secondary CTAs on /device-management and /linux-management to match homepage hero (#45123)
## Summary

- Replace "See Fleet in action" video buttons (with play icon and "3
mins" label) on `/device-management` and `/linux-management` with "Join
a workshop" `<animated-arrow-button>` linking to `/gitops-workshop`
- Matches the homepage hero secondary CTA style established in #45122
for `/replace-jamf`

## Changes

- `website/views/pages/device-management.ejs` — replaced video-button
CTA with animated-arrow-button
- `website/views/pages/landing-pages/linux-management.ejs` — replaced
video-button CTA with animated-arrow-button

## Notes

Searched the entire website codebase for all instances. Only
`/device-management` and `/linux-management` had the matching "See Fleet
in action" video modal CTA pattern. Other uses of `clickOpenVideoModal`
(transparency page's "Why is Fleet on my computer?", calendar banner,
customer testimonials) are different CTAs and were left unchanged.

---

Built for [Mike
McNeil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1778477147893939?thread_ts=1778225078.313209&cid=D0AFASLRHNU)
by [Kilo for Slack](https://kilo.ai/slack)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-05-11 00:33:05 -05:00
kilo-code-bot[bot]andkiloconnect[bot] 13cce654d9 Update /replace-jamf secondary CTA to match homepage hero (#45122)
## Summary

- Replace the "See Fleet in action" video button (with "3 mins" duration
label) on the `/replace-jamf` hero section with an
`<animated-arrow-button>` linking to `/gitops-workshop` with the text
"Join a workshop"
- This matches the homepage hero's secondary CTA styling, text, and link

## Changes

**`website/views/pages/landing-pages/replace-jamf.ejs`**

Before:
```html
<a purpose="video-button" @click="clickOpenVideoModal('fleet-in-three-minutes')">
  <img alt="Play" class="d-inline" src="/images/icon-play-video-32x32@2x.png">
  See Fleet in action <span>3 mins</span>
</a>
```

After:
```html
<animated-arrow-button href="/gitops-workshop">Join a workshop</animated-arrow-button>
```

This aligns the `/replace-jamf` page CTA with the homepage hero's
secondary CTA pattern.

---

Built for [Mike
McNeil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1778476868031439?thread_ts=1778225078.313209&cid=D0AFASLRHNU)
by [Kilo for Slack](https://kilo.ai/slack)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-05-11 00:25:30 -05:00
kilo-code-bot[bot]andkiloconnect[bot] b0fa0b3cbc Rename 'Resources / blog' nav item to 'Releases / news' (#45121)
## Summary

- Renames the "Resources / blog" navigation item in the website header
to "Releases / news"
- Changes the link destination from `/articles` to `/releases`
- Updates both desktop and mobile nav occurrences in
`website/views/layouts/layout.ejs`

## Changes

In `website/views/layouts/layout.ejs`:
- Updated `data-dropdown-option` attribute from "Resources / blog" to
"Releases / news"
- Updated `href` from "/articles" to "/releases"
- Updated `alt` text on the icon image
- Updated the visible label text

---

Built for [Mike
McNeil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1778476577694689?thread_ts=1778225078.313209&cid=D0AFASLRHNU)
by [Kilo for Slack](https://kilo.ai/slack)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-05-11 00:23:29 -05:00
fleet-releaseandallenhouchins 18267b8641 Update Fleet-maintained apps (#45120)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated Cursor for macOS and Windows to version 3.3.30 with new
installer URLs and verification checksums.
  * Updated Draw.io Desktop for macOS to version 30.0.0.
  * Updated OrbStack for macOS to version 2.1.3.
* Refreshed package metadata and installation queries for all updated
applications.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45120)

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-05-10 20:40:58 -05:00
Ashish Kuthiala 41549d9ccc Add assets to marketing handbook pages (#45104) 2026-05-09 10:48:27 -05:00
fleet-release ef9e95967c Update Fleet-maintained apps (#45103) 2026-05-09 07:42:14 -05:00