<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#33222
# Details
This PR fixes an issue where clicking "Controls" in the top nav doesn't
go to the expected page when the current page is a Controls tab like
"Scripts". The expected page is the default "Controls" page, i.e. the
first tab (currently the "OS Settings" tab).
# 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
- [ ] Added/updated automated tests
I made a pass at this but it requires either the router or mocking the
`<Link>/<ContextLink>` components which seems like overkill for this.
- [X] QA'd all new/changed functionality manually

Implements #31822. Admins can now unenroll Android hosts, and when a user deletes their work profile from an Android device, that host is automagically unenrolled from Fleet.
Fixes#31897.
# 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.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
## Testing
- [ ] Added/updated automated tests
- [ ] QA'd all new/changed functionality manually
## New Fleet configuration settings
- [ ] Verified that the setting is exported via `fleetctl
generate-gitops`
- [x] 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)
- [x] 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
- New Features
- GitOps now supports software icons: generate and include icon
files/paths in specs for packages and App Store apps.
- CLI adds flags to control concurrent icon uploads/updates.
- Icons are uploaded, updated, or deleted automatically during GitOps
runs.
- UI YAML modal now includes icon_url and offers icon download.
- Improvements
- Robust path resolution for icon assets across specs.
- Non-YAML outputs handle both string and byte file contents.
- Bug Fixes
- Removes stale icons after App Store app re-association.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Scott Gress <scottmgress@gmail.com>
Co-authored-by: Scott Gress <scott@fleetdm.com>
Co-authored-by: Jahziel Villasana-Espinoza <jahziel@fleetdm.com>
Resolves#32419.
I took a stab at it while fixing #32420.
Sorry, missed to record with audio:
- I test with the proxy being down (to simulate failure when deleting)
and that the delete modal is not closed.
- Spinner during the delete API request.
- Cancel button disabled during the delete API request/.
- Tenant ID is cleared after successful deletion.
https://github.com/user-attachments/assets/dbad0613-a8bd-455d-8741-83c626328437
- [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
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#33429
# Details
Updates tooltip when viewing Linux software to be installed during
setup:
<img width="468" height="383" alt="image"
src="https://github.com/user-attachments/assets/04d77a42-81b0-4cdd-b5b7-351dc6e63611"
/>
## Testing
- [X] QA'd all new/changed functionality manually
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#30691
# Details
This PR fixes an issue where the cursor in the SQL editor is positioned
incorrectly on ChromeOS and Windows.
Also fixed an incorrect style declaration that was preventing keywords
from being bolded.
Before:
<img width="364" height="103" alt="image"
src="https://github.com/user-attachments/assets/19d9632b-b57b-4a0f-b019-99a7c145da8d"
/>
After:
<img width="363" height="108" alt="image"
src="https://github.com/user-attachments/assets/cbe9aefe-1920-41e5-9212-eb0f8cb51e4b"
/>
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
## Testing
- [X] QA'd all new/changed functionality manually
Tested on Chrome, Firefox, Safari and Microsoft Edge (where appropriate)
on MacOS, Linux and Windows.
Note that the specified padding does not render on ChromeOS or Windows
(it doesn't in production right now either).
## For #33299
- Couple card logic to URL param
- Validate param, push to default macos if invalid or missing
- Validate that other setup experience cards don't have a platform
param, push to no param if present

- [x] QA'd all new/changed functionality manually
---------
Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
## For #33285
- Push to details page with `status` param included to avoid that page's
effect that muddies browser history. Since tab nav on that page is
controlled by URL query params, this effect is important - there _must_
always be a status param.
- Update the details page table query change handler to replace instead
of push to the URL
https://github.com/user-attachments/assets/b15b4eda-df24-4d01-a7f4-a60a63282e63
- [x] QA'd all new/changed functionality manually
Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
Builds on #27080 / #32133. Shows disk space if we can calculate it, otherwise, shows 'Not supported'. Excludes unsupported hosts from low disk space filter.
resolves#31821, resolves#32120
this updates the UI to support unenrolling android and ios and ipad
devices. This includes:
**updating the host details page to include and unenroll action in the
host actions dropdown**
**Updating the unenroll modal to have dynamic content depending on the
device we are unenrolling**
**updating the global activities to have different messages for mdm
enroll and mdm unenroll actions**
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
resolves#32686
this adds the ability for users to resend profiles in the OS Settings
modal on the my device page.
This also changes which profiles can resend. Now only macos hosts
.mobileconfig profiles can be resent
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [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
Fixes: #31845
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
## Testing
- [x] QA'd all new/changed functionality manually
## New Fleet configuration settings
- [x] Setting(s) is/are explicitly excluded from GitOps
resolves#32356
This updates the host details and my device pages to show the users card
that will show the idp info on android devices
this also adds some tests for the various rendering states of the users
card component
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
## For #32967
- Only check for setup experience software to install if Fleet is a
Premium instance
- Test 3 states for Linux hosts (Free, Premium with setup software,
Premium without setup software)
### Free –> forwards directly to regular DUP:

### Premium –> checks for setup software, renders "Setting up your
device" page if present:

## Testing
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
- [x] Confirmed that the fix is not expected to adversely impact load
test results
---------
Co-authored-by: Jacob Shandling <jacob@fleetdm.com>