Commit Graph
25510 Commits
Author SHA1 Message Date
fleet-releaseandallenhouchins dec391238e Update Fleet-maintained apps (#48024)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated application package metadata and installer information across
20+ maintained applications to reflect current releases, including Adobe
Creative Cloud, Zoom, TeamViewer, Visual Studio Code, Proton Mail, Royal
TS, and others.
* Refreshed version detection baselines, download URLs, and validation
checksums to ensure proper recognition and deployment of latest
versions.

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

---------

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-06-22 11:13:30 -05:00
Allen Houchins b89e4eceb5 Revert "Clear categories in workstations.yml" (#48025)
Reverts fleetdm/fleet#48022
2026-06-22 11:04:03 -05:00
Allen Houchins 3e55f0d8a9 Clear categories in workstations.yml (#48022)
Replace explicit category lists with empty arrays for many software
entries in it-and-security/fleets/workstations.yml. This standardizes
the categories field (macOS, Linux, Windows entries across software,
app_store_apps, and fleet_maintained_apps) while keeping the key present
for tooling that expects it; no other metadata or behavior was changed.
2026-06-22 10:58:57 -05:00
Adam Baali 1dd68212fd Fix VS Code macOS FMA installing Intel build on Apple Silicon (#48010) (#48015)
Fixes #48010.

VSCodeUniversalInstaller pointed at /darwin/stable (Intel). 
Changed to /darwin-universal/stable, the actual universal build. sha256
stays no_check.

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

* **Bug Fixes**
* Improved VS Code installation handling for Apple Silicon Macs to use
the universal build variant by adjusting the download URL mapping,
resulting in better compatibility during installs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 10:56:34 -05:00
5db5544d5b Fleet-maintained app updates (#47979)
Automated ingestion of latest Fleet-maintained app data.

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

* **Chores**
* Updated maintained app version metadata and installer URLs/checksums
for multiple applications, including Adobe Acrobat DC, AWS CLI, DBeaver
Community, Visual Studio Code, RustDesk, VNC Viewer, Darktable, and
more.
* **Bug Fixes**
* Improved Darktable installation/uninstallation handling for the
correct installer type, including more reliable detection and success
handling for reboot-required outcomes.
* Updated VNC Viewer/Connect Viewer installation/uninstallation
detection and MSI selection; aligned the app identifier and matching
patterns to the rebranded name.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
Co-authored-by: Allen Houchins <allenhouchins@mac.com>
2026-06-22 10:47:51 -05:00
Noah Talerman 0a6c007d70 API fix: Incorrect key name (#48017)
`authtype_username_password` is right. `authtype_username_and_password`
is not.

For the following bug:
- https://github.com/fleetdm/fleet/issues/47844
2026-06-22 10:47:30 -05:00
Noah Talerman 7019e84d03 GitOps reference: Mention fleetctl new (#48018)
For the following issue: 
- https://github.com/fleetdm/fleet/issues/47866
2026-06-22 10:46:53 -05:00
Jonathan Katz 2b4437a566 Fix spaces in script package name causing validation failure (#47945)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #44710

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

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

## Testing

- [x] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)

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

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


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

## Summary by CodeRabbit

* **Bug Fixes**
* Fixed validation failures when script packages contain spaces in their
names during GitOps operations.
* Script-based installer packages are no longer incorrectly validated as
standard URLs.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 11:23:16 -04:00
Steven Palmesano 22c732a249 Update build instructions (#46339)
Small updates to our build instructions that I ran into while testing.

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

## Summary by CodeRabbit

* **Documentation**
* Updated macOS M1 setup instructions with simplified platform
configuration guidance for MySQL containers.

<!-- review_stack_entry_start -->

[![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/46339?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 09:43:59 -05:00
Steven Palmesano eaa3509a94 Remove "VPP" from "Installed App Store app" activity (#44974)
We now support both iOS and Android for this:
[`docs/Contributing/reference/audit-logs.md#L1747`](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/audit-logs.md?plain=1#L1747).

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

## Summary by CodeRabbit

* **Bug Fixes**
* Simplified the activity filter label text for installed app store apps
by removing unnecessary notation.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 09:43:45 -05:00
Carlo 47db1a63bd Fix host software details dropping pending installs/uninstalls (#47954)
**Related issue:** Related to #47839

Follow-up to #47949 (same root cause, same issue). That PR fixed the
OR-dominance drop out in the software *title summary* queries; this
applies the same fix to the four per-host queries behind a host's
*software details* page.

A host with more than one queued install or uninstall for the same
installer, VPP app, or in-house app could disappear from its software
details page: the old self anti-join's `(priority < OR created_at >)`
predicate let two rows eliminate each other, so neither survived. This
rewrites those four queries (`hostSoftwareInstalls`,
`hostSoftwareUninstalls`, `hostVPPInstalls`, `hostInHouseInstalls`) to
rank with `ROW_NUMBER()` and keep one row per item. No performance
change — these are per-host queries.

  # 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] `SELECT *` is avoided and SQL injection is prevented (named
placeholders used for all values in the modified statements).

  ## Testing

  - [x] Added/updated automated tests
- [x] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)

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

## Summary by CodeRabbit

* **Bug Fixes**
* Fixed an issue where installers, VPP apps, and in-house apps could
disappear from a host's software details page when multiple install or
uninstall actions were queued for the same item.

* **Tests**
  * Added regression tests to prevent this issue from recurring.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 10:34:37 -04:00
Jordan Montgomery cf32a02fbc Bump migrations that conflict with v4.87 (#48002)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves migration failure dsicussed here:
https://fleetdm.slack.com/archives/C019WG4GH0A/p1782131309693279

20260610172952_AddHasACMEPayloadToHostMDMAppleProfiles.go was backported
to v4.87 but had a newer timestamp so would have conflicted with
migrations merged in the frist few days of v4.89 development

# Checklist for submitter

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

No changes file as this is ultimately an `unreleased-bug`
- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.

## Testing

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

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


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

## Summary by CodeRabbit

* **New Features**
  * Added support for policy gating in setup workflows.
  * Added support for BYOD fleet and enrollment tracking capabilities.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 09:17:04 -04:00
dependabot[bot]andLucas Manuel Rodriguez 33cbc192b2 Bump github.com/containerd/containerd from 1.7.32 to 1.7.33 (#47959)
Bumps
[github.com/containerd/containerd](https://github.com/containerd/containerd)
from 1.7.32 to 1.7.33.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/containerd/containerd/releases">github.com/containerd/containerd's
releases</a>.</em></p>
<blockquote>
<h2>containerd 1.7.33</h2>
<p>Welcome to the v1.7.33 release of containerd!</p>
<p>The thirty-third patch release for containerd 1.7 contains various
fixes
and updates including security patches.</p>
<h3>Security Updates</h3>
<ul>
<li>
<p><strong>containerd</strong></p>
<ul>
<li><a
href="https://github.com/containerd/containerd/security/advisories/GHSA-xhf5-7wjv-pqxp"><strong>CVE-2026-53488</strong></a></li>
<li><a
href="https://github.com/containerd/containerd/security/advisories/GHSA-jpcc-p29g-p8mq"><strong>CVE-2026-47262</strong></a></li>
</ul>
</li>
<li>
<p><strong>go-jose</strong></p>
<ul>
<li><a
href="https://github.com/go-jose/go-jose/security/advisories/GHSA-78h2-9frx-2jm8"><strong>CVE-2026-34986</strong></a></li>
</ul>
</li>
</ul>
<p>Please try out the release binaries and report any issues at
<a
href="https://github.com/containerd/containerd/issues">https://github.com/containerd/containerd/issues</a>.</p>
<h3>Contributors</h3>
<ul>
<li>Samuel Karp</li>
<li>Chris Henzie</li>
<li>Akihiro Suda</li>
<li>Akhil Mohan</li>
<li>Ben Cressey</li>
<li>Davanum Srinivas</li>
<li>Sopho Merkviladze</li>
</ul>
<h3>Changes</h3>
<!-- raw HTML omitted -->
<ul>
<li>Prepare release notes for v1.7.33 (<a
href="https://redirect.github.com/containerd/containerd/pull/13631">#13631</a>)
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/7517e6737a6077dbdb5d403e693169cb8163549d"><code>7517e6737</code></a>
Prepare release notes for v1.7.33</li>
<li><a
href="https://github.com/containerd/containerd/commit/ab306518a326fe7e4c27f64a8cf62b7a0fb3e9c6"><code>ab306518a</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/containerd/containerd/commit/d34cdafdaf51e1db435f1e0898f16d0da5038557"><code>d34cdafda</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/containerd/containerd/commit/9ab2b7a894d15738f8323f69def272c29277b57f"><code>9ab2b7a89</code></a>
Bound user-database file reads in openBoundedUserFile</li>
<li><a
href="https://github.com/containerd/containerd/commit/1e9806f90d934f2e0180c279fa9f0019537f2704"><code>1e9806f90</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/containerd/containerd/commit/4d8ba4d23561c9ec21b0113ddcfc22f41792b25e"><code>4d8ba4d23</code></a>
Do not propagate reserved labels from image configs</li>
</ul>
</li>
<li>update runc binary to v1.3.6 (<a
href="https://redirect.github.com/containerd/containerd/pull/13615">#13615</a>)
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/74c728c13487844c43620b14cc66dc05dca96836"><code>74c728c13</code></a>
update runc binary to v1.3.6</li>
</ul>
</li>
<li>update go to 1.26.4/1.25.11 (<a
href="https://redirect.github.com/containerd/containerd/pull/13579">#13579</a>)
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/947caa4b7469fd3b71ee62d0f7410b00252f5842"><code>947caa4b7</code></a>
update go to 1.26.4/1.25.11</li>
</ul>
</li>
<li>Configure udevd children-max for root-test (<a
href="https://redirect.github.com/containerd/containerd/pull/13564">#13564</a>)
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/e884e964e31c4fb61fcdc376a2fa3151ac245a65"><code>e884e964e</code></a>
Configure udevd children-max for root-test</li>
</ul>
</li>
<li>Clean up disk space in node e2e workflow (<a
href="https://redirect.github.com/containerd/containerd/pull/13552">#13552</a>)
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/b9e7568888325736b12c9f50271045bc618dc9b9"><code>b9e756888</code></a>
Clean up disk space in node e2e workflow</li>
</ul>
</li>
<li>Bump go-jose/go-jose/v3 to v3.0.5 to fix GHSA-78h2-9frx-2jm8 (<a
href="https://redirect.github.com/containerd/containerd/pull/13467">#13467</a>)
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/4dfc1844e8cb46a6c04a8c57211ab50e1412ccc1"><code>4dfc1844e</code></a>
Bump go-jose to v3.0.5 to address CVE-2026-34986</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/containerd/containerd/commit/e8b1a9bc270f9952197c470b8bad573b03a3a608"><code>e8b1a9b</code></a>
Merge pull request <a
href="https://redirect.github.com/containerd/containerd/issues/13631">#13631</a>
from samuelkarp/prepare-1.7.33</li>
<li><a
href="https://github.com/containerd/containerd/commit/7517e6737a6077dbdb5d403e693169cb8163549d"><code>7517e67</code></a>
Prepare release notes for v1.7.33</li>
<li><a
href="https://github.com/containerd/containerd/commit/ab306518a326fe7e4c27f64a8cf62b7a0fb3e9c6"><code>ab30651</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/containerd/containerd/commit/096289897c75f26f9b1e7a805acde329fa048a96"><code>0962898</code></a>
Merge pull request <a
href="https://redirect.github.com/containerd/containerd/issues/13615">#13615</a>
from k8s-infra-cherrypick-robot/cherry-pick-13606-t...</li>
<li><a
href="https://github.com/containerd/containerd/commit/74c728c13487844c43620b14cc66dc05dca96836"><code>74c728c</code></a>
update runc binary to v1.3.6</li>
<li><a
href="https://github.com/containerd/containerd/commit/d34cdafdaf51e1db435f1e0898f16d0da5038557"><code>d34cdaf</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/containerd/containerd/commit/1e9806f90d934f2e0180c279fa9f0019537f2704"><code>1e9806f</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/containerd/containerd/commit/9ab2b7a894d15738f8323f69def272c29277b57f"><code>9ab2b7a</code></a>
Bound user-database file reads in openBoundedUserFile</li>
<li><a
href="https://github.com/containerd/containerd/commit/d805d96d67b205a40d3c12414ec306d19ec2d848"><code>d805d96</code></a>
Merge pull request <a
href="https://redirect.github.com/containerd/containerd/issues/13579">#13579</a>
from akhilerm/1.7-go1.26.4</li>
<li><a
href="https://github.com/containerd/containerd/commit/947caa4b7469fd3b71ee62d0f7410b00252f5842"><code>947caa4</code></a>
update go to 1.26.4/1.25.11</li>
<li>Additional commits viewable in <a
href="https://github.com/containerd/containerd/compare/v1.7.32...v1.7.33">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/containerd/containerd&package-manager=go_modules&previous-version=1.7.32&new-version=1.7.33)](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>
Co-authored-by: Lucas Manuel Rodriguez <lucas@fleetdm.com>
2026-06-22 09:23:41 -03:00
Isabell Reedy 45e4c45cc3 Update CODEOWNERS (#47995)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
  * Updated code ownership assignments for documentation resources.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-22 13:30:27 +03:00
Mike McNeil 96fe8c0abe Website: Update homepage.ejs (fix formatting) (#47991) 2026-06-22 00:21:17 -05:00
Mike McNeil 9ec07ca06a Website: Update linux-management.ejs - Lead with self-service (#47990)
Website: Update linux-management.ejs - Lead with self-service flow so
it's easier for folks with small linux fleets
2026-06-22 00:00:13 -05:00
ec0feadb88 Update secondary CTA buttons on landing pages (#47970)
## Summary

- **Device management page**: Changed secondary CTA from "Join a
workshop" → "View pricing" (href updated to `/pricing`) in both hero and
bottom CTA sections.
- **Software management page**: Changed secondary CTA from "Try it
yourself" → "View pricing" (href updated to `/pricing`) in both hero and
bottom CTA sections.
- **Visibility & reporting page**: Changed secondary CTA from "Try it
yourself" → "View pricing" (href updated to `/pricing`) in both hero and
bottom CTA sections.
- **Homepage**: Changed secondary CTA text from "Join a workshop" → "Get
certified" (href to `/gitops-workshop` kept unchanged).

---

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

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
2026-06-21 23:53:57 -05:00
Allen Houchins 2d110da3e0 Revert "Unblock workstations GitOps by temporarily removing software categories" (#47988)
Reverts fleetdm/fleet#47986
2026-06-21 23:03:16 -05:00
Allen Houchins ef8de7469c Unblock workstations GitOps by temporarily removing software categories (#47986)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Related to #47981

## What this does (dogfood GitOps unblock — step 1 of 2, workstations)

Follow-up to #47984. The mobile fleets are fixed (their stale rows were
purged and categories re-added), but GitOps still fails on the
**workstations** fleet with the same `software_categories` duplicate-key
error:

```
Error 1062 (23000): Duplicate entry '<team>-?️ Productivity' for key 'software_categories.idx_software_categories_team_id_name'
```

**Root cause (same as #47981):** the `software_categories.(team_id,
name)` unique index uses `utf8mb4_unicode_ci`, which treats the
variation selector `U+FE0F` as ignorable. A stale stored category row
(e.g. `🖥 Productivity` without the selector, from an earlier build) is
*equal* to today's canonical `🖥️ Productivity` per the index but
*distinct* to Go's `strings.EqualFold`, so the existence check misses it
and the insert collides.

**This PR (step 1):** removes the `categories:` blocks from
`workstations.yml`. With nothing to insert, the software batch applies
cleanly, and Fleet's `deleteUnusedSelfServiceCategories` cleanup then
purges the stale rows for that team. Software still installs; it's just
uncategorized until step 2.

**Step 2 (follow-up):** once this is applied, revert this PR to re-add
the categories. The team will have no stale rows by then, so canonical
categories get created fresh and software is categorized again.

This is the **last** fleet that needed it — `servers.yml`,
`testing-and-qa.yml`, and `unassigned.yml` define no categories. The
permanent fix (idempotent category insert) is tracked under #47981.

### Scope of the change
- Only `categories:` blocks removed: **109 lines deleted, 0 added.**
- All 109 package references and the 1 app store app are preserved; the
two commented-out `# categories:` examples are left untouched; file
remains valid YAML.

# Checklist for submitter

- [x] Changes file: N/A — dogfood GitOps config only, no product code or
user-visible product change.

## Testing

- [x] Verified `workstations.yml` remains valid YAML with all software
items intact (only `categories:` blocks removed).
- [ ] Confirm a GitOps dry run passes before merge.


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

## Summary by CodeRabbit

* **Chores**
* Streamlined software package and application configurations by
removing unused metadata fields from multiple application entries across
packages and fleet-maintained apps.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-21 22:45:19 -05:00
Allen Houchins 5956ea74bb Revert "Unblock mobile GitOps by temporarily removing app store categories" (#47985)
Reverts fleetdm/fleet#47984
2026-06-21 22:31:01 -05:00
Allen Houchins 7c73da5369 Unblock mobile GitOps by temporarily removing app store categories (#47984)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Related to #47981

## What this does (dogfood GitOps unblock — step 1 of 2)

The GitOps run for the mobile-device fleets fails while applying app
store apps:

```
applying app store apps for fleet: "📱🏢 Employee-issued mobile devices":
Validation Failed: Error 1062 (23000): Duplicate entry '303-?️ Productivity'
for key 'software_categories.idx_software_categories_team_id_name'
```

**Root cause:** the category names in the YAML are correct (plain
`"Productivity"`, etc., which translate server-side to the canonical
emoji names). The conflict is a **stale stored category row** for the
team. The `software_categories.(team_id, name)` unique index uses
`utf8mb4_unicode_ci`, which treats the Unicode variation selector
`U+FE0F` as ignorable. An earlier build stored Productivity as `🖥
Productivity` (no selector); today's code produces the canonical `🖥️
Productivity` (with selector). Those are *equal* to the index but
*distinct* to Go's `strings.EqualFold`, so the existence check misses
the stale row and the insert collides. This only affects the two
variation-selector categories — `🖥️ Productivity` and `🛠️ Utilities` —
which is why the failure is on Productivity.

**This PR (step 1):** temporarily removes the `categories:` blocks from
`company-owned-mobile-devices.yml` and `personal-mobile-devices.yml`.
With no categories to insert, the app store batch applies cleanly, and
Fleet's `deleteUnusedSelfServiceCategories` cleanup then purges the
stale rows for those teams. Apps still install; they're just
uncategorized until step 2.

**Step 2 (follow-up):** once this is applied, revert this PR to re-add
the categories. The teams will have no stale rows by then, so the
canonical categories get created fresh and the apps are categorized
correctly.

The permanent fix (makes the category insert idempotent so any stored
byte form is tolerated) is tracked separately under #47981.

> Note: `workstations.yml` uses the same categories and may need the
same treatment if that fleet also has a stale row — not included here
since only the mobile fleets are confirmed failing.

# Checklist for submitter

- [x] Changes file: N/A — dogfood GitOps config only, no product code or
user-visible product change.
- [x] Input data is properly validated: N/A — removing config, no new
inputs.

## Testing

- [x] Verified both files remain valid YAML and all 24 app store apps
per fleet are preserved (only `categories:` blocks removed;
comments/formatting intact).
- [ ] Confirm a GitOps dry run passes before merge.


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

## Summary by CodeRabbit

* **Chores**
* Simplified app catalog entries for iOS and iPadOS devices by removing
category metadata while preserving all app functionality and settings.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-21 22:24:08 -05:00
Allen Houchins bd1120f3fc Remove platform field from Linux exclusion label (#47982)
Removed platform specification for Linux hosts in external storage
restrictions.

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

## Summary by CodeRabbit

* **Chores**
* Removed platform-specific scoping from external storage restrictions
label configuration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-21 21:47:39 -05:00
Allen Houchins 46cad465bc Add hosts to external storage exclusion labels (#47980)
Add device IDs to manual labels to exempt specific machines from
read-only external/removable storage restrictions. The macs label now
includes host "1339" and the windows label includes host "1230",
allowing these devices to receive read-write external/removable storage
profiles.
2026-06-21 21:44:29 -05:00
Allen Houchins 87bc1ce78a Add disk management profile and exclusion label (#44235)
Add a macOS Disk management declaration profile that sets
ExternalStorage to ReadOnly, and create a manual label "Macs excluded
from external storage restrictions" for opt-outs. Register the new label
in default.yml and reference the new Disk management settings.json in
the workstations fleet controls, excluding hosts in the manual label so
they retain read-write external storage.


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

## Summary by CodeRabbit

## Release Notes

**New Features**
- Enforces external storage devices as read-only on macOS, Windows, and
Linux systems
- Introduces new host labels allowing administrators to selectively
exempt specific devices from external storage restrictions

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-21 20:58:20 -05:00
Sharon Katz 01fe85da46 Fix Windows E2E uninstall script path (#47976)
**Related issue:** #47725 moved the script but didn't update the
workflow

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
  N/A - CI-only change, no user-visible impact.

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

## Testing

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

**How this was tested:**

1. Confirmed `uninstall-fleetd-windows.ps1` does not exist at the old
path (`it-and-security/lib/windows/scripts/`) on `main` -- reproduces
the `CommandNotFoundException`.
2. Confirmed the file exists at the new path
(`docs/solutions/windows/scripts/`).
3. Ran sparse-checkout simulations locally: old path yields no script
file, new path successfully pulls it.
4. Compared old vs new script -- the new version adds an MDM
unenrollment step that is a no-op in E2E (no MDM enrolled), so behavior
is equivalent.
5. Triggered the full E2E agent workflow on this PR branch to verify all
32 Windows jobs pass the "Uninstall Orbit" step.

## Root cause

PR #47725 ("Fix unenroll Windows instructions", merged June 19) moved
`uninstall-fleetd-windows.ps1` from
`it-and-security/lib/windows/scripts/` to
`docs/solutions/windows/scripts/` as part of merging the "turn off MDM"
and "uninstall fleetd" scripts into one. However,
`.github/workflows/e2e-agent.yml` was not updated to reflect the new
path.

This broke all 32 Windows E2E jobs (windows-2025 and windows-11-arm, all
channel/update combinations) at the "Uninstall Orbit" step. The nightly
run has been failing for 2 consecutive cycles (June 20 and 21),
exhausting all 4 retry attempts each time.

## Fix

Update the sparse-checkout path and PowerShell run command in
`e2e-agent.yml` to the new location.

## Note: inconsistent uninstall script locations

After #47725, the uninstall scripts are now in different directories per
OS:

| OS | Uninstall script location |
|---|---|
| macOS | `it-and-security/lib/macos/scripts/uninstall-fleetd-macos.sh`
|
| Linux | `it-and-security/lib/linux/scripts/uninstall-fleetd-linux.sh`
|
| Windows |
`docs/solutions/windows/scripts/uninstall-fleetd-windows.ps1` |

macOS and Linux remain in `it-and-security/lib/` (Fleet's dogfooding
GitOps config). Windows was moved to `docs/solutions/` (user-facing
documentation). This inconsistency may warrant a follow-up to decide on
a canonical location.
2026-06-21 18:24:13 -04:00
fleet-releaseandallenhouchins 0e6d8e97b0 Update Fleet-maintained apps (#47971)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated installer metadata, version references, checksums, and
deployment scripts for 40+ maintained applications across Windows and
macOS platforms. Includes updates to Android Studio, Firefox, Visual
Studio Code, Node.js, Microsoft Office suite, Joplin, Cursor, Cyberduck,
Ollama, Warp, and others, ensuring system compatibility with their
latest available releases and proper installation procedures.

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-06-20 22:06:23 -05:00
dependabot[bot] 926ecd8f2e Bump ws from 8.20.1 to 8.21.0 in /tools/fleet-slackbot (#47967) 2026-06-20 08:22:43 -07:00
Noah Talerman 13b3d3a074 Update Prettier: Don't enforce line limit for markdown files (#47909) 2026-06-20 08:17:10 -07:00
Noah Talerman f26d6cc446 Continuous flow: Bug triage is led by Engineering Managers during standup (#47752) 2026-06-20 08:16:52 -07:00
George Karr 79c0890c38 Update design QA considerations for empty states (#47917) 2026-06-20 08:15:54 -07:00
George Karr a8757ef691 Move Scripts ownership from MDM to Software product group (#47780) 2026-06-20 08:15:29 -07:00
dependabot[bot] abb6c7b2a2 Bump dompurify from 3.4.9 to 3.4.11 (#47910) 2026-06-20 08:04:41 -07:00
George Karr e5b51abbc8 Handbook: Add security report handling timing expectations (#47640) 2026-06-20 08:03:32 -07:00
dependabot[bot] a85b1d5200 Bump js-yaml from 4.1.1 to 4.2.0 in /tools/fleet-slackbot (#47798) 2026-06-20 08:00:23 -07:00
dependabot[bot] 4e00816216 Bump form-data from 4.0.5 to 4.0.6 in /tools/fleet-slackbot (#47797) 2026-06-20 08:00:02 -07:00
dependabot[bot] 656af8fd28 Bump js-yaml from 3.14.2 to 4.2.0 (#47708) 2026-06-20 07:59:38 -07:00
Dan Gordon d5037f4fb1 add video link to release article (#47964) 2026-06-20 07:47:10 -07:00
Luke Heath 383d20cb26 Adding changes for Fleet v4.87.0 (#47109) (#47958) 2026-06-19 18:40:07 -07:00
Noah Talerman 4cbe93226a Release article: Fleet 4.87.0 (#47776) 2026-06-19 17:50:42 -07:00
Rachael Shaw f72325d81c v4.87.0 doc changes (#44709) 2026-06-19 17:47:50 -07:00
Rachael Shaw b19b984670 Update Okta conditional access docs (#47472)
I think this is no longer true because of #42757
2026-06-19 18:00:24 -05:00
Eric cf08f3e6a0 Website: Remove gradient background at the bottom of the partners page (#47955)
Changes:
- Removed the gradient background at the bottom of the /partners page

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

## Summary by CodeRabbit

* **Style**
  * Updated the visual appearance of the partners page banner.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-19 17:53:35 -05:00
kilo-code-bot[bot] 1baa74a6d2 Fix dashboard layout issue at ~989px by aligning HostCountCard breakpoint (#44303) 2026-06-19 15:46:15 -07:00
kilo-code-bot[bot] e1f972f3a2 Hide generate-gitops command from fleetctl help output (#44254) 2026-06-19 15:45:17 -07:00
Mike ThomasandEric 387b832171 Reframe messaging on /security-and-control (#47887)
Reframed messaging for IT admins.

---------

Co-authored-by: Eric <eashaw@sailsjs.com>
2026-06-19 16:16:52 -05:00
Jonathan Katz f138f6b646 Fix TestUpgradeCodesFromMaintainedApps after Cloudflare WARP rename (#47953)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #
Cloudflare WARP was renamed to Cloudflare One, and this test used it's
name in the fleet_maintained_apps table

# 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), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.
- [ ] Timeouts are implemented and retries are limited to avoid infinite
loops
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes

## Testing

- [x] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)

- [x] QA'd all new/changed functionality manually
N/A but needed for CI check


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

## Summary by CodeRabbit

* **Tests**
* Updated Windows WARP integration tests to use current product naming
conventions when querying fleet-maintained applications, ensuring test
accuracy across both verification and setup phases.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-19 17:02:17 -04:00
Carlo 3f5b58888f Fix software title page timeout for large upcoming-activity backlogs (#47949)
**Related issue:** Resolves #47839

The software title details page (`GET
/api/v1/fleet/software/titles/{id}`) could take minutes to load and
return a 500 or 502 when an installer, VPP app, or in-house app was
scoped to many hosts.

The cause was the status summary query. To find each host's most recent
pending activity, it joined `upcoming_activities` to itself, and an `OR`
in the join condition stopped MySQL from using an index. The query got
much slower as the pending backlog grew.

This rewrites the query in all three summary functions
(`GetSummaryHostSoftwareInstalls`, `GetSummaryHostVPPAppInstalls`,
`GetSummaryHostInHouseAppInstalls`) to use a `ROW_NUMBER()` window
function. It filters to the installer or app first, then picks each
host's most recent activity, which removes the self-join. It also fixes
a related bug where the old `OR` condition could drop a host from the
counts.

Verified live against a 6,000-host backlog. The page went from ~12.7s to
~1.1s with identical status counts.

  # 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-chan
  ges.md#changes-files) for more information.
- [x] `SELECT *` is avoided and SQL injection is prevented (named
placeholders used for all values in the modified statements).

  ## Testing

  - [x] Added/updated automated tests
- [x] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
  - [x] QA'd all new/changed functionality manually
  
  ## Before (reproduction):
  

[before.webm](https://github.com/user-attachments/assets/f03154d5-6062-42e3-81d3-ce33b0809145)

  ## After (fix):


[after.webm](https://github.com/user-attachments/assets/b6d1ce53-7778-4023-84b7-56c49d846649)



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

* **Bug Fixes**
* Fixed software title details pages timing out for installers, VPP
apps, and in-house apps when hosts have large backlogs of pending
activities.
* Improved pending software install status selection to prevent hosts
from being dropped or counted inconsistently when multiple upcoming
activities exist.

* **Tests**
* Added regression coverage for upcoming-per-host counting without
dropouts when multiple queued activity entries share the same host and
app context.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-19 17:01:05 -04:00
fleet-releaseandallenhouchins 0fc1cb78ac Update Fleet-maintained apps (#47946)
Automated ingestion of latest Fleet-maintained app data.

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

## Summary by CodeRabbit

* **Chores**
* Updated application version metadata and checksums for Arc
(1.111.0.274), BatFi (3.1.0), GoodSync (12.11.4), Granola (7.345.5), and
Readest (0.11.10).

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

Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
2026-06-19 15:01:34 -05:00
Scott Gress 0301aea831 Add more filtering to Vulnerability Exposure chart (frontend) (#47674)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** For #44746 

# 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] Changing the filters in the UI causes the related API params to be
set
- [x] Changing the software filters causes the "filtered" tooltip to
show up and include info about software filters
- [x] Changing the host filters causes the "filtered" tooltip to show up
and include info about host filters
- [x] Changing both host and software filters causes the "filtered"
tooltip to show up and include info about both filters
  - [x] CVE search works and utilizes infinite scroll



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

## Summary by CodeRabbit

## Release Notes

* **New Features**
  * Added software category filtering options to vulnerability charts.
  * Added EPSS range filtering with validation to refine results.
  * Added known exploit toggle and CVE exclusion capabilities.
  * Improved filter status display with tabbed interface.

* **Tests**
* Added comprehensive test coverage for software filtering and
validation logic.

* **Style**
  * Enhanced filter UI styling and interactivity.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-19 14:17:31 -05:00
Allen Houchins c6291b37f4 Rename Cloudflare WARP to Cloudflare One (#47939)
Update branding from "Cloudflare WARP" to "Cloudflare One" across
maintained app data. Changed name fields in Homebrew and Winget input
JSON, updated outputs/apps.json entries and descriptions, and updated
the frontend NameToIdentifierMap key to "Cloudflare One" (keeps existing
slug/identifier unchanged).

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

# 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), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.
- [ ] Timeouts are implemented and retries are limited to avoid infinite
loops
- [ ] 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))


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

## Summary by CodeRabbit

* **Chores**
* Updated product references from Cloudflare WARP to Cloudflare One
across platform metadata and catalogs.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-19 13:50:00 -05:00