<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#37599
# Details
Fixes an unreleased issue where if you clear the start/end time of a
software auto-update schedule and then attempt to disable and save the
schedule, the API returns an error due to the start/end time being
invalid. Now, the start/end time will be unchanged if the schedule is
disabled.
## 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
- [X] Alerted the release DRI if additional load testing is needed
Note that there are still some TODOs (commented out for now). Will make
a separate issue to fill those in, so we can get the basic guide out
ASAP.
---
**Edit:** Bug report for missing info
[here](https://github.com/fleetdm/fleet/issues/37652)
Added emphasis on understanding the needs of IT and Security leaders to
better partner with them.
---------
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
- @noahtalerman: We decided to use the Milestone field in GitHub for the
"Release planning" project instead of the custom "Sprint" field. That
way, we only have one field to update when a user story is moved from
one release to another.
- @noahtalerman: I removed the "Sprint" field from the "Release
planning" project.
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#37603
This is a follow-up of https://github.com/fleetdm/fleet/pull/37604 which
only renames the `About` directory and its files to `Vitals`.
## Testing
- [x] QA'd all new/changed functionality manually
This pull request adds full support for managing the installation and
uninstallation of Spotify on Windows via winget in the maintained apps
system. It introduces new configuration and script files, updates output
manifests, and ensures that both install and uninstall processes are
handled silently and robustly.
**Spotify Windows app integration:**
* Added a new manifest `spotify.json` in
`ee/maintained-apps/inputs/winget` to define Spotify's winget package
details, including references to custom install and uninstall scripts.
* Updated `ee/maintained-apps/outputs/apps.json` to register the Spotify
Windows app, enabling it to be discovered and managed by the platform.
* Added a new output manifest
`ee/maintained-apps/outputs/spotify/windows.json` specifying the
installer URL, version, install/uninstall script references, and
detection query for Spotify.
**Installation and uninstallation scripting:**
* Introduced a PowerShell install script `spotify_install.ps1` that
performs a silent installation of Spotify, handling exit codes and
errors gracefully.
* Added a PowerShell uninstall script `spotify_uninstall.ps1` that
locates Spotify's uninstaller via the registry, kills running processes,
and executes the uninstall silently, preserving existing arguments and
handling errors.
This pull request adds support for managing OBS Studio on Windows using
Winget, including new install and uninstall scripts for automated
deployment and removal. The main changes are the introduction of a
metadata file for OBS Studio and robust PowerShell scripts to handle
silent installation and uninstallation.
**OBS Studio Winget Integration:**
* Added a new metadata file `obs.json` describing OBS Studio for Winget
management, including identifiers, script paths, and default categories.
**Installation Script:**
* Introduced `obs_install.ps1`, a PowerShell script that installs OBS
Studio silently using the `/S` flag, captures the installer exit code,
and handles errors gracefully.
**Uninstallation Script:**
* Added `obs_uninstall.ps1`, a PowerShell script that locates the OBS
Studio uninstaller via the Windows registry, ensures all running OBS
processes are stopped, parses the uninstall command, and performs a
silent uninstall (also with `/S`), including error handling and exit
code reporting.
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#36690
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes
## Testing
- [ ] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)
- [ ] QA'd all new/changed functionality manually
For unreleased bug fixes in a release candidate, one of:
- [ ] Confirmed that the fix is not expected to adversely impact load
test results
- [ ] Alerted the release DRI if additional load testing is needed
## Database migrations
- [ ] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [ ] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ ] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
## New Fleet configuration settings
- [ ] Setting(s) is/are explicitly excluded from GitOps
If you didn't check the box above, follow this checklist for
GitOps-enabled settings:
- [ ] Verified that the setting is exported via `fleetctl
generate-gitops`
- [ ] Verified the setting is documented in a separate PR to [the GitOps
documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485)
- [ ] Verified that the setting is cleared on the server if it is not
supplied in a YAML file (or that it is documented as being optional)
- [ ] Verified that any relevant UI is disabled when GitOps mode is
enabled
## fleetd/orbit/Fleet Desktop
- [ ] Verified compatibility with the latest released version of Fleet
(see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md))
- [ ] If the change applies to only one platform, confirmed that
`runtime.GOOS` is used as needed to isolate changes
- [ ] Verified that fleetd runs on macOS, Linux and Windows
- [ ] Verified auto-update works from the released version of component
to the new version (see [tools/tuf/test](../tools/tuf/test/README.md))
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Automatic cleanup of certificates that have been removed from your
system, now executed automatically before enrolling new certificates
* Enhanced certificate operation tracking with improved status reporting
for installation and removal operations, providing better visibility
into certificate lifecycle events
* **Bug Fixes**
* Fixed back navigation behavior on the Debug screen, improving
navigation flow for users
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Victor Lyuboslavsky <2685025+getvictor@users.noreply.github.com>
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#35454
> Note - GitOps will be included in a separate story:
https://github.com/fleetdm/fleet/issues/35457
# 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)
## Testing
- [X] Added/updated automated tests
Added tests for new DB methods as well as API updates.
- [X] QA'd all new/changed functionality manually
## Database migrations
- [X] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
**Related issue:** #35554
Ability to add multiple `platform` values is added to "List setup
experience software" (`GET api/v1/fleet/setup_experience/software`) in
PR #37468. This change is similar to how `platform` can be set in the
"List software" endpoint (`GET /api/v1/fleet/software/titles`).
---------
Co-authored-by: Marko Lisica <83164494+marko-lisica@users.noreply.github.com>
This pull request adds support for the Windows version of Sourcetree
Enterprise to the maintained apps catalog. The changes introduce
metadata, installation, and uninstallation details for this app,
ensuring it can be managed and deployed via Fleet.
**Addition of Sourcetree Enterprise (Windows):**
* Added a new input definition for Sourcetree Enterprise in
`winget/sourcetree.json`, specifying package identifiers and installer
details.
* Updated `apps.json` to include Sourcetree Enterprise for the Windows
platform, with appropriate metadata and description.
* Created a new output file `sourcetree/windows.json` with version info,
install/uninstall PowerShell scripts, installer URL, SHA256 hash, and
upgrade code for proper management.
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#35852
Tested by adding a small(100ms but even smaller should work) sleep in
the goroutine before calling renewReceiver.Run() which simulates the
active goroutine being preempted and the other running before it gets
scheduled again. When I did this it would hang and timeout every time
before the fix. AFter the fix I never saw a timeout over 500 runs with
the sleep added and without
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [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
<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** Resolves#37440
Note, from manual testing, when moving host to a new team, it does NOT
get the certs for the new team. We could fix this as part of this fix or
in a separate PR.
## 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
* **New Features**
* Added Fleet Agent integration for Android MDM devices
* Fleet Agent policies are now automatically constructed and applied to
managed Android devices
* Fleet Agent configuration includes server URL, enrollment secrets, and
certificate templates
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->