2024-12-19 17:09:38 +00:00
|
|
|
import { ILabelSoftwareTitle } from "./label";
|
2026-05-05 12:42:52 +00:00
|
|
|
import { IOrgLogoMode } from "./org_logo";
|
2024-07-30 17:14:25 +00:00
|
|
|
import { Platform } from "./platform";
|
2022-02-17 22:54:27 +00:00
|
|
|
import { IPolicy } from "./policy";
|
2021-10-18 17:44:13 +00:00
|
|
|
import { IQuery } from "./query";
|
2024-05-07 16:10:06 +00:00
|
|
|
import { ISchedulableQueryStats } from "./schedulable_query";
|
2025-10-15 13:41:43 +00:00
|
|
|
import { SoftwareSource } from "./software";
|
2022-11-02 18:19:05 +00:00
|
|
|
import { ITeamSummary } from "./team";
|
2023-04-07 15:36:47 +00:00
|
|
|
import { UserRole } from "./user";
|
2021-07-26 20:04:35 +00:00
|
|
|
|
|
|
|
|
export enum ActivityType {
|
|
|
|
|
CreatedPack = "created_pack",
|
|
|
|
|
DeletedPack = "deleted_pack",
|
|
|
|
|
EditedPack = "edited_pack",
|
2022-02-17 22:54:27 +00:00
|
|
|
CreatedPolicy = "created_policy",
|
|
|
|
|
DeletedPolicy = "deleted_policy",
|
|
|
|
|
EditedPolicy = "edited_policy",
|
2021-07-26 20:04:35 +00:00
|
|
|
CreatedSavedQuery = "created_saved_query",
|
|
|
|
|
DeletedSavedQuery = "deleted_saved_query",
|
2023-11-17 20:22:47 +00:00
|
|
|
DeletedMultipleSavedQuery = "deleted_multiple_saved_query",
|
2021-07-26 20:04:35 +00:00
|
|
|
EditedSavedQuery = "edited_saved_query",
|
|
|
|
|
CreatedTeam = "created_team",
|
|
|
|
|
DeletedTeam = "deleted_team",
|
|
|
|
|
LiveQuery = "live_query",
|
2025-05-08 13:22:55 +00:00
|
|
|
AppliedSpecPack = "applied_spec_pack", // fleetctl
|
|
|
|
|
AppliedSpecPolicy = "applied_spec_policy", // fleetctl
|
|
|
|
|
AppliedSpecSavedQuery = "applied_spec_saved_query", // fleetctl
|
|
|
|
|
AppliedSpecSoftware = "applied_spec_software", // fleetctl
|
|
|
|
|
AppliedSpecTeam = "applied_spec_team", // fleetctl
|
2022-09-23 16:05:07 +00:00
|
|
|
EditedAgentOptions = "edited_agent_options",
|
2022-12-22 20:24:13 +00:00
|
|
|
UserAddedBySSO = "user_added_by_sso",
|
|
|
|
|
UserLoggedIn = "user_logged_in",
|
2023-01-20 15:43:22 +00:00
|
|
|
UserFailedLogin = "user_failed_login",
|
2022-12-22 20:24:13 +00:00
|
|
|
UserCreated = "created_user",
|
|
|
|
|
UserDeleted = "deleted_user",
|
2025-10-31 16:37:31 +00:00
|
|
|
HostDeleted = "deleted_host",
|
2022-12-22 20:24:13 +00:00
|
|
|
UserChangedGlobalRole = "changed_user_global_role",
|
|
|
|
|
UserDeletedGlobalRole = "deleted_user_global_role",
|
|
|
|
|
UserChangedTeamRole = "changed_user_team_role",
|
|
|
|
|
UserDeletedTeamRole = "deleted_user_team_role",
|
2024-11-18 21:51:36 +00:00
|
|
|
FleetEnrolled = "fleet_enrolled",
|
2023-01-16 14:09:27 +00:00
|
|
|
MdmEnrolled = "mdm_enrolled",
|
|
|
|
|
MdmUnenrolled = "mdm_unenrolled",
|
2023-02-01 15:58:24 +00:00
|
|
|
EditedMacosMinVersion = "edited_macos_min_version",
|
2024-07-25 20:33:36 +00:00
|
|
|
EditedIosMinVersion = "edited_ios_min_version",
|
|
|
|
|
EditedIpadosMinVersion = "edited_ipados_min_version",
|
Add "update new hosts to latest" to OS Updates form for MacOS (#37103)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #36088
# 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
Saving this value currently results in a 400 response from the server
since it's not a valid key yet. We can keep this in draft until the
backend is merged if we want to e2e test with it.
### Controls -> OS Settings "Target" section
#### All platforms
- [X] Update success banner message to "Successfully updated."
<img width="200" alt="image"
src="https://github.com/user-attachments/assets/bc43ec79-41d1-4dd3-947c-8152051fd209"
/>
#### macOS / iOS / iPadOS
- [X] Update tooltip text for "Minimum version" to `Enrolled hosts are
updated to exactly this version.`
<img width="250" alt="Image"
src="https://github.com/user-attachments/assets/7d870224-395e-4bc9-937e-be599da57a97"
/>
- [X] Make "available from Apple" a link, replacing "Learn more", and
link to https://fleetdm.com/learn-more-about/apple-available-os-updates
<img width="250" height="363" alt="image"
src="https://github.com/user-attachments/assets/8191ec2d-bf0a-4cf6-9b1a-1272c0ff69b0"
/>
> Note - this URL is current a 404
- [X] Remove text referring to platform from "End user experience"
heading, i.e. it should just say "End user experience" for all platforms
where it appears, not e.g. "End user experience on macOS"
#### macOS Only
- [X] Add new "Update new hosts to latest" checkbox
<img width="316" height="406" alt="Image"
src="https://github.com/user-attachments/assets/71aec05a-b809-436d-8bfd-cd3e14b27ea1"
/>
- [X] Reflects the `macos_updates.update_new_hosts` setting for the team
or (for no team) global config (only testable via automated tests right
now)
- [X] Update End user experience text to "When a minimum version is
enforced, end users see a native macOS notification (DDM) once per day."
(see above)
### Global activity feed
- [X] When "Update new hosts to latest" is enabled, activity should say
`[Actor's name] enabled OS updates for all new macOS hosts on the [team
name] team. macOS hosts will upgrade to the lastest version when they
enroll.`
- [X] When "Update new hosts to latest" is disabled, activity should say
`[Actor's name] disabled updates for all new macOS hosts on the [team
name] team.`
(tested via automated tests)
2025-12-12 17:46:07 +00:00
|
|
|
EnabledMacosUpdateNewHosts = "enabled_macos_update_new_hosts",
|
|
|
|
|
DisabledMacosUpdateNewHosts = "disabled_macos_update_new_hosts",
|
2023-02-14 17:00:36 +00:00
|
|
|
ReadHostDiskEncryptionKey = "read_host_disk_encryption_key",
|
2026-03-10 17:05:01 +00:00
|
|
|
ViewedHostRecoveryLockPassword = "viewed_host_recovery_lock_password",
|
|
|
|
|
SetHostRecoveryLockPassword = "set_host_recovery_lock_password",
|
2026-03-11 21:01:56 +00:00
|
|
|
RotatedHostRecoveryLockPassword = "rotated_host_recovery_lock_password",
|
2026-03-10 17:05:01 +00:00
|
|
|
EnabledRecoveryLockPasswords = "enabled_recovery_lock_passwords",
|
|
|
|
|
DisabledRecoveryLockPasswords = "disabled_recovery_lock_passwords",
|
2024-07-23 16:13:09 +00:00
|
|
|
/** Note: BE not renamed (yet) from macOS even though activity is also used for iOS and iPadOS */
|
|
|
|
|
CreatedAppleOSProfile = "created_macos_profile",
|
|
|
|
|
/** Note: BE not renamed (yet) from macOS even though activity is also used for iOS and iPadOS */
|
|
|
|
|
DeletedAppleOSProfile = "deleted_macos_profile",
|
|
|
|
|
/** Note: BE not renamed (yet) from macOS even though activity is also used for iOS and iPadOS */
|
|
|
|
|
EditedAppleOSProfile = "edited_macos_profile",
|
2024-10-17 14:21:26 +00:00
|
|
|
AddedNdesScepProxy = "added_ndes_scep_proxy",
|
2024-10-15 13:23:59 +00:00
|
|
|
DeletedNdesScepProxy = "deleted_ndes_scep_proxy",
|
|
|
|
|
EditedNdesScepProxy = "edited_ndes_scep_proxy",
|
2025-03-18 19:41:03 +00:00
|
|
|
AddedDigicert = "added_digicert",
|
|
|
|
|
DeletedDigicert = "deleted_digicert",
|
|
|
|
|
EditedDigicert = "edited_digicert",
|
2025-12-01 16:48:43 +00:00
|
|
|
AddedConditionalAccessMicrosoft = "added_conditional_access_microsoft",
|
|
|
|
|
DeletedConditionalAccessMicrosoft = "deleted_conditional_access_microsoft",
|
|
|
|
|
EditedConditionalAccessMicrosoft = "edited_conditional_access_microsoft",
|
2025-03-18 19:41:03 +00:00
|
|
|
AddedCustomScepProxy = "added_custom_scep_proxy",
|
|
|
|
|
DeletedCustomScepProxy = "deleted_custom_scep_proxy",
|
|
|
|
|
EditedCustomScepProxy = "edited_custom_scep_proxy",
|
2025-09-05 10:37:20 +00:00
|
|
|
AddedHydrant = "added_hydrant",
|
|
|
|
|
DeletedHydrant = "deleted_hydrant",
|
|
|
|
|
EditedHydrant = "edited_hydrant",
|
2025-09-26 14:26:57 +00:00
|
|
|
AddedSmallstep = "added_smallstep",
|
|
|
|
|
DeletedSmallstep = "deleted_smallstep",
|
|
|
|
|
EditedSmallstep = "edited_smallstep",
|
2025-11-08 00:11:40 +00:00
|
|
|
AddedCustomESTProxy = "added_custom_est_proxy",
|
|
|
|
|
DeletedCustomESTProxy = "deleted_custom_est_proxy",
|
|
|
|
|
EditedCustomESTProxy = "edited_custom_est_proxy",
|
2023-11-21 17:11:32 +00:00
|
|
|
CreatedWindowsProfile = "created_windows_profile",
|
|
|
|
|
DeletedWindowsProfile = "deleted_windows_profile",
|
|
|
|
|
EditedWindowsProfile = "edited_windows_profile",
|
2025-09-22 15:29:57 +00:00
|
|
|
CreatedAndroidProfile = "created_android_profile",
|
|
|
|
|
DeletedAndroidProfile = "deleted_android_profile",
|
|
|
|
|
EditedAndroidProfile = "edited_android_profile",
|
2025-12-17 17:08:40 +00:00
|
|
|
EditedAndroidCertificate = "edited_android_certificate",
|
2026-03-26 20:06:29 +00:00
|
|
|
ResentCertificate = "resent_certificate",
|
2026-04-08 22:05:25 +00:00
|
|
|
// Note: This activity is generated for all platforms.
|
2023-03-15 20:08:04 +00:00
|
|
|
EnabledMacDiskEncryption = "enabled_macos_disk_encryption",
|
2026-04-08 22:05:25 +00:00
|
|
|
// Note: This activity is generated for all platforms.
|
2023-03-15 20:08:04 +00:00
|
|
|
DisabledMacDiskEncryption = "disabled_macos_disk_encryption",
|
2023-04-26 18:40:14 +00:00
|
|
|
AddedBootstrapPackage = "added_bootstrap_package",
|
|
|
|
|
DeletedBootstrapPackage = "deleted_bootstrap_package",
|
2023-04-26 16:02:40 +00:00
|
|
|
ChangedMacOSSetupAssistant = "changed_macos_setup_assistant",
|
|
|
|
|
DeletedMacOSSetupAssistant = "deleted_macos_setup_assistant",
|
2023-05-15 16:10:43 +00:00
|
|
|
EnabledMacOSSetupEndUserAuth = "enabled_macos_setup_end_user_auth",
|
|
|
|
|
DisabledMacOSSetupEndUserAuth = "disabled_macos_setup_end_user_auth",
|
2023-06-22 16:01:42 +00:00
|
|
|
TransferredHosts = "transferred_hosts",
|
2023-06-28 16:28:17 +00:00
|
|
|
EnabledWindowsMdm = "enabled_windows_mdm",
|
|
|
|
|
DisabledWindowsMdm = "disabled_windows_mdm",
|
UI - GitOps Mode: Core abstractions, first batch of applications (#26401)
## For #26229 – Part 1

- This PR contains the core abstractions, routes, API updates, and types
for GitOps mode in the UI. Since this work will touch essentially every
part of the Fleet UI, it is ripe for merge conflicts. To mitigate such
conflicts, I'll be merging this work in a number of iterative PRs. ~To
effectively gate any of this work from showing until it is all merged to
`main`, [this commit](feedbb2d4c25ec2e304e1f18d409cee62f6752ed) hides
the settings section that allows enabling/disabling this setting,
effectively feature flagging the entire thing. In the last of these
iterative PRs, that commit will be reverted to engage the entire
feature. For testing purposes, reviewers can `git revert
feedbb2d4c25ec2e304e1f18d409cee62f6752ed` locally~ The new settings
section for this feature is feature flagged until all PRs are merged -
to show the setting section while testing, run `ALLOW_GITOPS_MODE=true
NODE_ENV=development yarn run webpack --progress --watch` in place of
`make generate-dev`
- Changes file will be added and feature flag removed in the last PR
- [x] Settings page with routing, form, API integration (hidden until
last PR)
- [x] Activities
- [x] Navbar indicator
- Apply GOM conditional UI to:
- [x] Manage enroll secret modal: .5
- Controls >
- [x] Scripts:
- Setup experience >
- [x] Install software > Select software modal
- [x] OS Settings >
- [x] Custom settings
- [x] Disk encryption
- [x] OS Updates
2/18/25, added to this PR:
- [x] Controls > Setup experience > Run script
- [x] Software >
- [x] Manage automations modal
- [x] Add software >
- [x] App Store (VPP)
- [x] Custom package
- [x] Queries
- [x] Manage
- [x] Automations modal
- [x] New
- [x] Edit
- [x] Policies
- [x] Manage
- [x] New
- [x] Edit
- Manage automations
- [x] Calendar events
- [x] Manual QA for all new/changed functionality
---------
Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-02-20 16:41:07 +00:00
|
|
|
EnabledGitOpsMode = "enabled_gitops_mode",
|
|
|
|
|
DisabledGitOpsMode = "disabled_gitops_mode",
|
2026-04-24 18:09:31 +00:00
|
|
|
EnabledGitOpsException = "enabled_gitops_exception",
|
|
|
|
|
DisabledGitOpsException = "disabled_gitops_exception",
|
2024-12-02 20:30:51 +00:00
|
|
|
EnabledWindowsMdmMigration = "enabled_windows_mdm_migration",
|
|
|
|
|
DisabledWindowsMdmMigration = "disabled_windows_mdm_migration",
|
2023-08-29 10:47:37 +00:00
|
|
|
RanScript = "ran_script",
|
2025-04-28 23:32:41 +00:00
|
|
|
RanScriptBatch = "ran_script_batch",
|
2025-08-15 15:14:39 +00:00
|
|
|
ScheduledScriptBatch = "scheduled_script_batch",
|
|
|
|
|
CanceledScriptBatch = "canceled_script_batch",
|
2023-10-10 22:00:45 +00:00
|
|
|
AddedScript = "added_script",
|
2025-02-03 22:27:44 +00:00
|
|
|
UpdatedScript = "updated_script",
|
2023-10-10 22:00:45 +00:00
|
|
|
DeletedScript = "deleted_script",
|
|
|
|
|
EditedScript = "edited_script",
|
2023-11-29 16:07:24 +00:00
|
|
|
EditedWindowsUpdates = "edited_windows_updates",
|
2024-02-13 18:03:53 +00:00
|
|
|
LockedHost = "locked_host",
|
|
|
|
|
UnlockedHost = "unlocked_host",
|
2024-02-26 14:26:30 +00:00
|
|
|
WipedHost = "wiped_host",
|
2026-04-22 22:53:59 +00:00
|
|
|
FailedWipe = "failed_wipe",
|
2024-03-26 17:54:23 +00:00
|
|
|
CreatedDeclarationProfile = "created_declaration_profile",
|
|
|
|
|
DeletedDeclarationProfile = "deleted_declaration_profile",
|
|
|
|
|
EditedDeclarationProfile = "edited_declaration_profile",
|
2024-04-15 13:17:08 +00:00
|
|
|
ResentConfigurationProfile = "resent_configuration_profile",
|
2025-05-12 12:32:05 +00:00
|
|
|
ResentConfigurationProfileBatch = "resent_configuration_profile_batch",
|
2024-05-08 14:08:28 +00:00
|
|
|
AddedSoftware = "added_software",
|
2024-09-17 13:40:47 +00:00
|
|
|
EditedSoftware = "edited_software",
|
2024-05-08 14:08:28 +00:00
|
|
|
DeletedSoftware = "deleted_software",
|
2024-05-09 20:45:53 +00:00
|
|
|
InstalledSoftware = "installed_software",
|
2024-09-06 13:53:29 +00:00
|
|
|
UninstalledSoftware = "uninstalled_software",
|
2024-07-16 17:16:57 +00:00
|
|
|
EnabledVpp = "enabled_vpp",
|
|
|
|
|
DisabledVpp = "disabled_vpp",
|
|
|
|
|
AddedAppStoreApp = "added_app_store_app",
|
2025-02-03 22:10:22 +00:00
|
|
|
EditedAppStoreApp = "edited_app_store_app",
|
2024-07-16 17:16:57 +00:00
|
|
|
DeletedAppStoreApp = "deleted_app_store_app",
|
|
|
|
|
InstalledAppStoreApp = "installed_app_store_app",
|
2024-11-08 15:07:56 +00:00
|
|
|
EnabledActivityAutomations = "enabled_activity_automations",
|
|
|
|
|
EditedActivityAutomations = "edited_activity_automations",
|
|
|
|
|
DisabledActivityAutomations = "disabled_activity_automations",
|
2025-04-07 11:11:24 +00:00
|
|
|
CanceledRunScript = "canceled_run_script",
|
|
|
|
|
CanceledInstallAppStoreApp = "canceled_install_app_store_app",
|
|
|
|
|
CanceledInstallSoftware = "canceled_install_software",
|
|
|
|
|
CanceledUninstallSoftware = "canceled_uninstall_software",
|
2026-04-14 14:39:26 +00:00
|
|
|
CanceledSetupExperience = "canceled_setup_experience",
|
2025-02-27 14:07:34 +00:00
|
|
|
EnabledAndroidMdm = "enabled_android_mdm",
|
|
|
|
|
DisabledAndroidMdm = "disabled_android_mdm",
|
2025-06-11 17:22:46 +00:00
|
|
|
ConfiguredMSEntraConditionalAccess = "added_conditional_access_integration_microsoft",
|
|
|
|
|
DeletedMSEntraConditionalAccess = "deleted_conditional_access_integration_microsoft",
|
Okta conditional access configs (#34566)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #34533
This is the first sub-task out of several. Changes file will be added in
a subsequent PR.
# 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)
## Testing
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
## New Fleet configuration settings
- [x] Setting(s) is/are explicitly **excluded** from GitOps
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added Okta Conditional Access support (IDP, ACS URL, audience,
certificate) and exposed conditional access in AppConfig/API
* App activity logging for adding/removing Okta conditional access
* **Bug Fixes**
* Fixed typo in conditional access validation messaging
* **Tests**
* Added tests for Okta Conditional Access lifecycle, license gating, and
GitOps export exclusion
* **Documentation**
* Added audit-log entries for Okta conditional access add/delete
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-10-24 15:11:14 +00:00
|
|
|
AddedConditionalAccessOkta = "added_conditional_access_okta",
|
|
|
|
|
DeletedConditionalAccessOkta = "deleted_conditional_access_okta",
|
2026-01-29 23:10:07 +00:00
|
|
|
HostBypassedConditionalAccess = "host_bypassed_conditional_access",
|
2026-01-29 22:52:57 +00:00
|
|
|
UpdatedConditionalAccessBypass = "update_conditional_access_bypass",
|
2025-04-15 20:55:07 +00:00
|
|
|
// enable/disable above feature for a team
|
|
|
|
|
EnabledConditionalAccessAutomations = "enabled_conditional_access_automations",
|
|
|
|
|
DisabledConditionalAccessAutomations = "disabled_conditional_access_automations",
|
2025-08-08 16:14:48 +00:00
|
|
|
EscrowedDiskEncryptionKey = "escrowed_disk_encryption_key",
|
2025-08-15 13:24:55 +00:00
|
|
|
CreatedCustomVariable = "created_custom_variable",
|
|
|
|
|
DeletedCustomVariable = "deleted_custom_variable",
|
2025-09-04 17:24:05 +00:00
|
|
|
EditedSetupExperienceSoftware = "edited_setup_experience_software",
|
2025-11-13 17:05:40 +00:00
|
|
|
EditedHostIdpData = "edited_host_idp_data",
|
2025-12-23 21:23:16 +00:00
|
|
|
AddedCertificate = "added_certificate",
|
2025-12-16 23:39:07 +00:00
|
|
|
DeletedCertificate = "deleted_certificate",
|
2026-03-31 21:26:39 +00:00
|
|
|
InstalledCertificate = "installed_certificate",
|
2026-02-07 13:21:10 +00:00
|
|
|
EditedEnrollSecrets = "edited_enroll_secrets",
|
2026-02-19 13:20:01 +00:00
|
|
|
AddedMicrosoftEntraTenant = "added_microsoft_entra_tenant",
|
|
|
|
|
DeletedMicrosoftEntraTenant = "deleted_microsoft_entra_tenant",
|
Clear passcode frontend (#43084)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42369
# 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. **Done in backend task for whole story**
- [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
* **New Features**
* Added "Clear passcode" action for iOS and iPad hosts in the host
actions menu, accessible only to Premium tier users with appropriate
permissions.
* Added confirmation modal for clearing device passcodes.
* Passcode clearing activity now appears in the activity feed with actor
information.
* Action is conditionally disabled during specific device states (Lost
Mode, pending wipe) with contextual tooltips.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-07 21:36:03 +00:00
|
|
|
ClearedPasscode = "cleared_passcode",
|
2026-04-22 20:58:36 +00:00
|
|
|
EnabledManagedLocalAccount = "enabled_managed_local_account",
|
|
|
|
|
DisabledManagedLocalAccount = "disabled_managed_local_account",
|
|
|
|
|
ViewedManagedLocalAccount = "read_managed_local_account",
|
|
|
|
|
CreatedManagedLocalAccount = "created_managed_local_account",
|
Add frontend support for enrollment profile renewal failed activity (#44530)
Backend PR: #44511
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41422
<img width="618" height="244" alt="image"
src="https://github.com/user-attachments/assets/c223e37d-7051-46a6-a2ea-6bd1bdcbb53e"
/>
<img width="777" height="780" alt="image"
src="https://github.com/user-attachments/assets/3b9ef4e9-2181-406b-a22e-e6773eba67af"
/>
<img width="649" height="236" alt="image"
src="https://github.com/user-attachments/assets/3985faf0-a1e4-404a-b190-cb623f52339a"
/>
<img width="1083" height="768" alt="image"
src="https://github.com/user-attachments/assets/2d4df607-4b34-435c-88db-6dc0fa09db2e"
/>
# 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. Part of backend PR
- [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
* **New Features**
* Added "Enrollment profile renewal failed" activity type and label.
* Failure entries now appear in activity feeds and host details with a
dedicated activity item and a details flow.
* Users can open a failure details modal showing a status icon, host
name (with fallback), relative failure time, guidance about certificate
expiration, and a link to Fleet support.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-01 18:05:31 +00:00
|
|
|
FailedEnrollmentProfileRenewal = "failed_enrollment_profile_renewal",
|
2026-05-01 13:19:45 +00:00
|
|
|
CreatedLabel = "created_label",
|
|
|
|
|
EditedLabel = "edited_label",
|
|
|
|
|
DeletedLabel = "deleted_label",
|
2026-05-05 12:42:52 +00:00
|
|
|
ChangedOrgLogo = "changed_org_logo",
|
|
|
|
|
DeletedOrgLogo = "deleted_org_logo",
|
2021-07-26 20:04:35 +00:00
|
|
|
}
|
2024-02-26 14:26:30 +00:00
|
|
|
|
2025-01-20 10:39:46 +00:00
|
|
|
/** This is a subset of ActivityType that are shown only for the host past activities */
|
2024-05-29 10:50:39 +00:00
|
|
|
export type IHostPastActivityType =
|
2024-02-26 14:26:30 +00:00
|
|
|
| ActivityType.RanScript
|
|
|
|
|
| ActivityType.LockedHost
|
2025-04-10 11:25:03 +00:00
|
|
|
| ActivityType.WipedHost
|
2026-04-22 22:53:59 +00:00
|
|
|
| ActivityType.FailedWipe
|
2025-05-21 20:47:11 +00:00
|
|
|
| ActivityType.ReadHostDiskEncryptionKey
|
2026-03-10 17:05:01 +00:00
|
|
|
| ActivityType.ViewedHostRecoveryLockPassword
|
|
|
|
|
| ActivityType.SetHostRecoveryLockPassword
|
2026-03-11 21:01:56 +00:00
|
|
|
| ActivityType.RotatedHostRecoveryLockPassword
|
2024-05-09 20:45:53 +00:00
|
|
|
| ActivityType.UnlockedHost
|
2024-07-16 17:16:57 +00:00
|
|
|
| ActivityType.InstalledSoftware
|
2024-09-06 13:53:29 +00:00
|
|
|
| ActivityType.UninstalledSoftware
|
2025-01-20 10:39:46 +00:00
|
|
|
| ActivityType.InstalledAppStoreApp
|
2025-04-07 11:11:24 +00:00
|
|
|
| ActivityType.CanceledRunScript
|
|
|
|
|
| ActivityType.CanceledInstallAppStoreApp
|
|
|
|
|
| ActivityType.CanceledInstallSoftware
|
2026-03-31 21:26:39 +00:00
|
|
|
| ActivityType.CanceledUninstallSoftware
|
2026-04-14 14:39:26 +00:00
|
|
|
| ActivityType.CanceledSetupExperience
|
2026-03-31 21:26:39 +00:00
|
|
|
| ActivityType.InstalledCertificate
|
Clear passcode frontend (#43084)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42369
# 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. **Done in backend task for whole story**
- [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
* **New Features**
* Added "Clear passcode" action for iOS and iPad hosts in the host
actions menu, accessible only to Premium tier users with appropriate
permissions.
* Added confirmation modal for clearing device passcodes.
* Passcode clearing activity now appears in the activity feed with actor
information.
* Action is conditionally disabled during specific device states (Lost
Mode, pending wipe) with contextual tooltips.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-07 21:36:03 +00:00
|
|
|
| ActivityType.ResentCertificate
|
2026-04-22 20:58:36 +00:00
|
|
|
| ActivityType.ClearedPasscode
|
|
|
|
|
| ActivityType.ViewedManagedLocalAccount
|
Add frontend support for enrollment profile renewal failed activity (#44530)
Backend PR: #44511
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41422
<img width="618" height="244" alt="image"
src="https://github.com/user-attachments/assets/c223e37d-7051-46a6-a2ea-6bd1bdcbb53e"
/>
<img width="777" height="780" alt="image"
src="https://github.com/user-attachments/assets/3b9ef4e9-2181-406b-a22e-e6773eba67af"
/>
<img width="649" height="236" alt="image"
src="https://github.com/user-attachments/assets/3985faf0-a1e4-404a-b190-cb623f52339a"
/>
<img width="1083" height="768" alt="image"
src="https://github.com/user-attachments/assets/2d4df607-4b34-435c-88db-6dc0fa09db2e"
/>
# 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. Part of backend PR
- [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
* **New Features**
* Added "Enrollment profile renewal failed" activity type and label.
* Failure entries now appear in activity feeds and host details with a
dedicated activity item and a details flow.
* Users can open a failure details modal showing a status icon, host
name (with fallback), relative failure time, guidance about certificate
expiration, and a link to Fleet support.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-01 18:05:31 +00:00
|
|
|
| ActivityType.CreatedManagedLocalAccount
|
|
|
|
|
| ActivityType.FailedEnrollmentProfileRenewal;
|
2024-02-26 14:26:30 +00:00
|
|
|
|
2025-01-20 10:39:46 +00:00
|
|
|
/** This is a subset of ActivityType that are shown only for the host upcoming activities */
|
2024-05-29 10:50:39 +00:00
|
|
|
export type IHostUpcomingActivityType =
|
|
|
|
|
| ActivityType.RanScript
|
2024-07-16 17:16:57 +00:00
|
|
|
| ActivityType.InstalledSoftware
|
2024-09-06 13:53:29 +00:00
|
|
|
| ActivityType.UninstalledSoftware
|
2025-10-14 14:03:21 +00:00
|
|
|
| ActivityType.InstalledAppStoreApp
|
|
|
|
|
| ActivityType.LockedHost
|
|
|
|
|
| ActivityType.UnlockedHost;
|
2024-05-29 10:50:39 +00:00
|
|
|
|
2021-07-26 20:04:35 +00:00
|
|
|
export interface IActivity {
|
|
|
|
|
created_at: string;
|
2025-12-17 17:06:58 +00:00
|
|
|
id: number | string;
|
2021-07-26 20:04:35 +00:00
|
|
|
actor_full_name: string;
|
|
|
|
|
actor_id: number;
|
2021-08-16 14:30:19 +00:00
|
|
|
actor_gravatar: string;
|
|
|
|
|
actor_email?: string;
|
2025-07-07 14:45:51 +00:00
|
|
|
actor_api_only: boolean;
|
2021-07-26 20:04:35 +00:00
|
|
|
type: ActivityType;
|
2025-02-11 19:53:11 +00:00
|
|
|
fleet_initiated: boolean;
|
2021-07-26 20:04:35 +00:00
|
|
|
details?: IActivityDetails;
|
|
|
|
|
}
|
2024-02-26 14:26:30 +00:00
|
|
|
|
2024-05-29 10:50:39 +00:00
|
|
|
export type IHostPastActivity = Omit<IActivity, "type" | "details"> & {
|
|
|
|
|
type: IHostPastActivityType;
|
|
|
|
|
details: IActivityDetails;
|
|
|
|
|
};
|
|
|
|
|
|
2025-04-16 09:17:48 +00:00
|
|
|
export type IHostUpcomingActivity = Omit<
|
|
|
|
|
IActivity,
|
|
|
|
|
"id" | "type" | "details"
|
|
|
|
|
> & {
|
2025-01-20 10:39:46 +00:00
|
|
|
uuid: string;
|
2024-05-29 10:50:39 +00:00
|
|
|
type: IHostUpcomingActivityType;
|
2024-05-09 20:45:53 +00:00
|
|
|
details: IActivityDetails;
|
2024-02-26 14:26:30 +00:00
|
|
|
};
|
|
|
|
|
|
2021-07-26 20:04:35 +00:00
|
|
|
export interface IActivityDetails {
|
2025-05-22 23:45:43 +00:00
|
|
|
/** Useful for passing this data into an activity details modal */
|
|
|
|
|
created_at?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
app_store_id?: number;
|
|
|
|
|
bootstrap_package_name?: string;
|
2025-05-22 23:45:43 +00:00
|
|
|
batch_execution_id?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
command_uuid?: string;
|
2025-12-18 17:52:25 +00:00
|
|
|
host_uuid?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
deadline_days?: number;
|
|
|
|
|
deadline?: string;
|
2023-01-20 15:43:22 +00:00
|
|
|
email?: string;
|
2025-07-24 15:28:50 +00:00
|
|
|
enrollment_id?: string | null; // unique identifier for MDM BYOD enrollments; null for other enrollments
|
2025-04-07 11:11:24 +00:00
|
|
|
global?: boolean;
|
|
|
|
|
grace_period_days?: number;
|
2023-01-24 19:11:39 +00:00
|
|
|
host_display_name?: string;
|
2023-06-22 16:01:42 +00:00
|
|
|
host_display_names?: string[];
|
2025-10-31 16:37:31 +00:00
|
|
|
host_expiry_window?: number;
|
2024-05-09 20:45:53 +00:00
|
|
|
host_id?: number;
|
2025-04-07 11:11:24 +00:00
|
|
|
host_ids?: number[];
|
2025-04-28 23:32:41 +00:00
|
|
|
host_count?: number;
|
2025-08-15 15:14:39 +00:00
|
|
|
canceled_count?: number;
|
2024-02-13 18:03:53 +00:00
|
|
|
host_platform?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
host_serial?: string;
|
|
|
|
|
install_uuid?: string;
|
2023-01-16 14:09:27 +00:00
|
|
|
installed_from_dep?: boolean;
|
2025-04-07 11:11:24 +00:00
|
|
|
labels_exclude_any?: ILabelSoftwareTitle[];
|
|
|
|
|
labels_include_any?: ILabelSoftwareTitle[];
|
|
|
|
|
location?: string; // name of location associated with VPP token
|
2025-09-22 14:41:24 +00:00
|
|
|
mdm_platform?: "microsoft" | "apple" | "android" | "ios" | "ipados";
|
2023-02-01 15:58:24 +00:00
|
|
|
minimum_version?: string;
|
2026-05-05 12:42:52 +00:00
|
|
|
mode?: IOrgLogoMode;
|
2023-04-26 16:02:40 +00:00
|
|
|
name?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
pack_id?: number;
|
|
|
|
|
pack_name?: string;
|
2025-09-22 14:41:24 +00:00
|
|
|
platform?: Platform; // OS platform
|
2025-04-07 11:11:24 +00:00
|
|
|
policy_id?: number;
|
|
|
|
|
policy_name?: string;
|
|
|
|
|
profile_identifier?: string;
|
|
|
|
|
profile_name?: string;
|
|
|
|
|
public_ip?: string;
|
|
|
|
|
query_id?: number;
|
|
|
|
|
query_ids?: number[];
|
|
|
|
|
query_name?: string;
|
|
|
|
|
query_sql?: string;
|
|
|
|
|
role?: UserRole;
|
2023-09-05 23:09:29 +00:00
|
|
|
script_execution_id?: string;
|
2023-10-10 22:00:45 +00:00
|
|
|
script_name?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
self_service?: boolean;
|
2024-05-08 14:08:28 +00:00
|
|
|
software_package?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
software_title_id?: number;
|
|
|
|
|
software_title?: string;
|
2025-11-13 17:06:14 +00:00
|
|
|
/** Custom name set per team by admin */
|
|
|
|
|
software_display_name?: string;
|
2025-10-15 13:41:43 +00:00
|
|
|
source?: SoftwareSource;
|
2025-04-07 11:11:24 +00:00
|
|
|
specs?: IQuery[] | IPolicy[];
|
|
|
|
|
stats?: ISchedulableQueryStats;
|
2024-05-09 20:45:53 +00:00
|
|
|
status?: string;
|
2025-04-07 11:11:24 +00:00
|
|
|
targets_count?: number;
|
|
|
|
|
team_id?: number | null;
|
|
|
|
|
team_name?: string | null;
|
|
|
|
|
teams?: ITeamSummary[];
|
2025-10-31 16:37:31 +00:00
|
|
|
triggered_by?: string;
|
2026-04-14 14:39:26 +00:00
|
|
|
from_setup_experience?: boolean;
|
2025-04-07 11:11:24 +00:00
|
|
|
user_email?: string;
|
|
|
|
|
user_id?: number;
|
2024-11-08 15:07:56 +00:00
|
|
|
webhook_url?: string;
|
2025-08-15 13:24:55 +00:00
|
|
|
custom_variable_name?: string;
|
2025-11-13 17:05:40 +00:00
|
|
|
host_idp_username?: string;
|
2026-01-29 23:10:07 +00:00
|
|
|
idp_full_name?: string;
|
2026-02-19 13:20:01 +00:00
|
|
|
tenant_id?: string;
|
2026-03-26 20:06:29 +00:00
|
|
|
certificate_name?: string;
|
|
|
|
|
certificate_template_id?: number;
|
2026-03-31 21:26:39 +00:00
|
|
|
detail?: string;
|
2026-04-24 18:09:31 +00:00
|
|
|
exception?: string;
|
2026-05-01 13:19:45 +00:00
|
|
|
label_id?: number;
|
|
|
|
|
label_name?: string;
|
|
|
|
|
fleet_id?: number | null;
|
|
|
|
|
fleet_name?: string | null;
|
2021-07-26 20:04:35 +00:00
|
|
|
}
|
2025-12-01 16:48:43 +00:00
|
|
|
|
2025-12-16 23:39:07 +00:00
|
|
|
// maps activity types to their corresponding label to use when filtering activites via the dropdown
|
|
|
|
|
export const ACTIVITY_TYPE_TO_FILTER_LABEL: Record<ActivityType, string> = {
|
2025-12-15 14:28:55 +00:00
|
|
|
added_app_store_app: "Added App Store app", // Includes VPP and Android Playstore apps
|
2025-12-01 16:48:43 +00:00
|
|
|
added_bootstrap_package: "Added bootstrap package",
|
|
|
|
|
added_conditional_access_microsoft: "Added conditional access: Microsoft",
|
|
|
|
|
added_custom_scep_proxy: "Added certificate authority (CA): custom SCEP",
|
|
|
|
|
added_digicert: "Added certificate authority (CA): DigiCert",
|
2026-02-19 13:20:01 +00:00
|
|
|
added_microsoft_entra_tenant: "Added Microsoft Entra tenant",
|
2025-12-01 16:48:43 +00:00
|
|
|
added_ndes_scep_proxy: "Added certificate authority (CA): NDES",
|
|
|
|
|
added_script: "Added script",
|
|
|
|
|
added_software: "Added software",
|
|
|
|
|
applied_spec_pack: "GitOps: edited packs",
|
|
|
|
|
applied_spec_policy: "GitOps: edited policies",
|
2026-03-05 23:16:33 +00:00
|
|
|
applied_spec_saved_query: "GitOps: edited reports",
|
2026-02-17 21:19:33 +00:00
|
|
|
applied_spec_team: "GitOps: edited fleets",
|
2025-12-01 16:48:43 +00:00
|
|
|
applied_spec_software: "GitOps: edited software",
|
|
|
|
|
canceled_install_app_store_app:
|
|
|
|
|
"Canceled activity: install App Store (VPP) app",
|
|
|
|
|
canceled_install_software: "Canceled activity: install software",
|
|
|
|
|
canceled_run_script: "Canceled activity: run script",
|
|
|
|
|
canceled_uninstall_software: "Canceled activity: uninstall software",
|
2026-04-14 14:39:26 +00:00
|
|
|
canceled_setup_experience: "Canceled setup experience",
|
2025-12-01 16:48:43 +00:00
|
|
|
changed_macos_setup_assistant: "Edited macOS automatic enrollment profile",
|
2026-05-05 12:42:52 +00:00
|
|
|
changed_org_logo: "Updated organization logo",
|
2025-12-01 16:48:43 +00:00
|
|
|
changed_user_global_role: "Edited user's role: global",
|
2026-02-17 21:19:33 +00:00
|
|
|
changed_user_team_role: "Edited user's role: fleet",
|
2025-12-01 16:48:43 +00:00
|
|
|
created_declaration_profile: "Added declaration (DDM) profile",
|
|
|
|
|
created_macos_profile: "Added configuration profile: Apple",
|
|
|
|
|
created_pack: "Created pack",
|
|
|
|
|
created_policy: "Created policy",
|
2026-03-05 23:16:33 +00:00
|
|
|
created_saved_query: "Added report",
|
2026-02-17 21:19:33 +00:00
|
|
|
created_team: "Added fleet",
|
2025-12-01 16:48:43 +00:00
|
|
|
created_user: "Added user",
|
|
|
|
|
created_windows_profile: "Added configuration profile: Windows",
|
2025-12-15 14:28:55 +00:00
|
|
|
deleted_app_store_app: "Deleted App Store app", // Includes VPP and Android Playstore apps
|
2025-12-01 16:48:43 +00:00
|
|
|
deleted_bootstrap_package: "Deleted bootstrap package",
|
|
|
|
|
deleted_conditional_access_microsoft: "Deleted conditional access: Microsoft",
|
|
|
|
|
deleted_custom_scep_proxy: "Deleted certificate authority (CA): custom SCEP",
|
|
|
|
|
deleted_declaration_profile: "Deleted declaration (DDM) profile",
|
|
|
|
|
deleted_digicert: "Deleted certificate authority (CA): DigiCert",
|
|
|
|
|
deleted_macos_profile: "Deleted configuration profile: Apple",
|
|
|
|
|
deleted_macos_setup_assistant: "Deleted macOS automatic enrollment profile",
|
2026-02-19 13:20:01 +00:00
|
|
|
deleted_microsoft_entra_tenant: "Deleted Microsoft Entra tenant",
|
2026-03-05 23:16:33 +00:00
|
|
|
deleted_multiple_saved_query: "Bulk deleted reports",
|
2025-12-01 16:48:43 +00:00
|
|
|
deleted_ndes_scep_proxy: "Deleted certificate authority (CA): NDES",
|
2026-05-05 12:42:52 +00:00
|
|
|
deleted_org_logo: "Deleted organization logo",
|
2025-12-01 16:48:43 +00:00
|
|
|
deleted_pack: "Deleted pack",
|
|
|
|
|
deleted_policy: "Deleted policy",
|
2026-03-05 23:16:33 +00:00
|
|
|
deleted_saved_query: "Deleted report",
|
2025-12-01 16:48:43 +00:00
|
|
|
deleted_script: "Deleted script",
|
|
|
|
|
deleted_software: "Deleted software",
|
2026-02-17 21:19:33 +00:00
|
|
|
deleted_team: "Deleted fleet",
|
2025-12-01 16:48:43 +00:00
|
|
|
deleted_user: "Deleted user",
|
|
|
|
|
deleted_user_global_role: "Deleted user's role: global",
|
2026-02-17 21:19:33 +00:00
|
|
|
deleted_user_team_role: "Deleted user's role: fleet",
|
2025-12-01 16:48:43 +00:00
|
|
|
deleted_windows_profile: "Deleted configuration profile: Windows",
|
|
|
|
|
disabled_activity_automations: "Disabled activity automations",
|
|
|
|
|
disabled_android_mdm: "Turned off Android MDM",
|
|
|
|
|
disabled_conditional_access_automations:
|
|
|
|
|
"Disabled conditional access automations",
|
2026-04-24 18:09:31 +00:00
|
|
|
disabled_gitops_exception: "Disabled GitOps exception",
|
2025-12-01 16:48:43 +00:00
|
|
|
disabled_gitops_mode: "Disabled GitOps mode",
|
|
|
|
|
disabled_macos_disk_encryption: "Turned off disk encryption",
|
|
|
|
|
disabled_macos_setup_end_user_auth:
|
|
|
|
|
"Turned off end user authentication (setup experience)",
|
Add "update new hosts to latest" to OS Updates form for MacOS (#37103)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #36088
# 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
Saving this value currently results in a 400 response from the server
since it's not a valid key yet. We can keep this in draft until the
backend is merged if we want to e2e test with it.
### Controls -> OS Settings "Target" section
#### All platforms
- [X] Update success banner message to "Successfully updated."
<img width="200" alt="image"
src="https://github.com/user-attachments/assets/bc43ec79-41d1-4dd3-947c-8152051fd209"
/>
#### macOS / iOS / iPadOS
- [X] Update tooltip text for "Minimum version" to `Enrolled hosts are
updated to exactly this version.`
<img width="250" alt="Image"
src="https://github.com/user-attachments/assets/7d870224-395e-4bc9-937e-be599da57a97"
/>
- [X] Make "available from Apple" a link, replacing "Learn more", and
link to https://fleetdm.com/learn-more-about/apple-available-os-updates
<img width="250" height="363" alt="image"
src="https://github.com/user-attachments/assets/8191ec2d-bf0a-4cf6-9b1a-1272c0ff69b0"
/>
> Note - this URL is current a 404
- [X] Remove text referring to platform from "End user experience"
heading, i.e. it should just say "End user experience" for all platforms
where it appears, not e.g. "End user experience on macOS"
#### macOS Only
- [X] Add new "Update new hosts to latest" checkbox
<img width="316" height="406" alt="Image"
src="https://github.com/user-attachments/assets/71aec05a-b809-436d-8bfd-cd3e14b27ea1"
/>
- [X] Reflects the `macos_updates.update_new_hosts` setting for the team
or (for no team) global config (only testable via automated tests right
now)
- [X] Update End user experience text to "When a minimum version is
enforced, end users see a native macOS notification (DDM) once per day."
(see above)
### Global activity feed
- [X] When "Update new hosts to latest" is enabled, activity should say
`[Actor's name] enabled OS updates for all new macOS hosts on the [team
name] team. macOS hosts will upgrade to the lastest version when they
enroll.`
- [X] When "Update new hosts to latest" is disabled, activity should say
`[Actor's name] disabled updates for all new macOS hosts on the [team
name] team.`
(tested via automated tests)
2025-12-12 17:46:07 +00:00
|
|
|
disabled_macos_update_new_hosts: "Disabled OS updates for new macOS hosts",
|
2025-12-01 16:48:43 +00:00
|
|
|
disabled_vpp: "Disabled Volume Purchasing Program (VPP)",
|
|
|
|
|
disabled_windows_mdm: "Turned off Windows MDM",
|
|
|
|
|
disabled_windows_mdm_migration: "Turned off Windows MDM migration",
|
|
|
|
|
edited_activity_automations: "Edited activity automations",
|
|
|
|
|
edited_agent_options: "Edited agent options",
|
2025-12-15 14:28:55 +00:00
|
|
|
edited_app_store_app: "Edited App Store app", // Includes VPP and Android Playstore apps
|
2025-12-01 16:48:43 +00:00
|
|
|
edited_conditional_access_microsoft: "Edited conditional access: Microsoft",
|
|
|
|
|
edited_custom_scep_proxy: "Edited certificate authority (CA): custom SCEP",
|
|
|
|
|
edited_declaration_profile: "GitOps: edited declaration (DDM) profiles",
|
|
|
|
|
edited_digicert: "Edited certificate authority (CA): DigiCert",
|
|
|
|
|
edited_ios_min_version: "OS updates: edited iOS",
|
|
|
|
|
edited_ipados_min_version: "OS updates: edited iPadOS",
|
|
|
|
|
edited_macos_min_version: "OS updates: edited macOS",
|
|
|
|
|
edited_macos_profile: "GitOps: edited configuration profiles: Apple",
|
|
|
|
|
edited_ndes_scep_proxy: "Edited certificate authority (CA): NDES",
|
|
|
|
|
edited_pack: "Edited pack",
|
|
|
|
|
edited_policy: "Edited policy",
|
2026-03-05 23:16:33 +00:00
|
|
|
edited_saved_query: "Edited report",
|
2025-12-01 16:48:43 +00:00
|
|
|
edited_script: "Edited script",
|
|
|
|
|
edited_software: "Edited software",
|
|
|
|
|
edited_windows_profile: "GitOps: edited configuration profiles: Windows",
|
|
|
|
|
edited_windows_updates: "OS updates: edited Windows",
|
|
|
|
|
enabled_activity_automations: "Enabled activity automations",
|
|
|
|
|
enabled_android_mdm: "Turned on Android MDM",
|
|
|
|
|
enabled_conditional_access_automations:
|
|
|
|
|
"Enabled conditional access automations",
|
2026-04-24 18:09:31 +00:00
|
|
|
enabled_gitops_exception: "Enabled GitOps exception",
|
2025-12-01 16:48:43 +00:00
|
|
|
enabled_gitops_mode: "Enabled GitOps mode",
|
|
|
|
|
enabled_macos_disk_encryption: "Turned on disk encryption",
|
|
|
|
|
enabled_macos_setup_end_user_auth:
|
|
|
|
|
"Turned on end user authentication (setup experience)",
|
Add "update new hosts to latest" to OS Updates form for MacOS (#37103)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #36088
# 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
Saving this value currently results in a 400 response from the server
since it's not a valid key yet. We can keep this in draft until the
backend is merged if we want to e2e test with it.
### Controls -> OS Settings "Target" section
#### All platforms
- [X] Update success banner message to "Successfully updated."
<img width="200" alt="image"
src="https://github.com/user-attachments/assets/bc43ec79-41d1-4dd3-947c-8152051fd209"
/>
#### macOS / iOS / iPadOS
- [X] Update tooltip text for "Minimum version" to `Enrolled hosts are
updated to exactly this version.`
<img width="250" alt="Image"
src="https://github.com/user-attachments/assets/7d870224-395e-4bc9-937e-be599da57a97"
/>
- [X] Make "available from Apple" a link, replacing "Learn more", and
link to https://fleetdm.com/learn-more-about/apple-available-os-updates
<img width="250" height="363" alt="image"
src="https://github.com/user-attachments/assets/8191ec2d-bf0a-4cf6-9b1a-1272c0ff69b0"
/>
> Note - this URL is current a 404
- [X] Remove text referring to platform from "End user experience"
heading, i.e. it should just say "End user experience" for all platforms
where it appears, not e.g. "End user experience on macOS"
#### macOS Only
- [X] Add new "Update new hosts to latest" checkbox
<img width="316" height="406" alt="Image"
src="https://github.com/user-attachments/assets/71aec05a-b809-436d-8bfd-cd3e14b27ea1"
/>
- [X] Reflects the `macos_updates.update_new_hosts` setting for the team
or (for no team) global config (only testable via automated tests right
now)
- [X] Update End user experience text to "When a minimum version is
enforced, end users see a native macOS notification (DDM) once per day."
(see above)
### Global activity feed
- [X] When "Update new hosts to latest" is enabled, activity should say
`[Actor's name] enabled OS updates for all new macOS hosts on the [team
name] team. macOS hosts will upgrade to the lastest version when they
enroll.`
- [X] When "Update new hosts to latest" is disabled, activity should say
`[Actor's name] disabled updates for all new macOS hosts on the [team
name] team.`
(tested via automated tests)
2025-12-12 17:46:07 +00:00
|
|
|
enabled_macos_update_new_hosts: "Enabled OS updates for new macOS hosts",
|
2025-12-01 16:48:43 +00:00
|
|
|
enabled_vpp: "Enabled Volume Purchasing Program (VPP)",
|
|
|
|
|
enabled_windows_mdm: "Turned on Windows MDM",
|
|
|
|
|
enabled_windows_mdm_migration: "Turned on Windows MDM migration",
|
|
|
|
|
fleet_enrolled: "Host enrolled",
|
|
|
|
|
installed_app_store_app: "Installed App Store (VPP) app",
|
|
|
|
|
installed_software: "Install software",
|
2026-03-05 23:16:33 +00:00
|
|
|
live_query: "Ran live report",
|
2025-12-01 16:48:43 +00:00
|
|
|
locked_host: "Locked host",
|
|
|
|
|
mdm_enrolled: "MDM turned on",
|
|
|
|
|
mdm_unenrolled: "MDM turned off",
|
|
|
|
|
ran_script: "Ran script",
|
|
|
|
|
ran_script_batch: "Bulk ran script",
|
|
|
|
|
scheduled_script_batch: "Scheduled script batch",
|
|
|
|
|
canceled_script_batch: "Canceled script batch",
|
|
|
|
|
read_host_disk_encryption_key: "Viewed disk encryption key",
|
2026-03-10 17:05:01 +00:00
|
|
|
viewed_host_recovery_lock_password: "Viewed Recovery Lock password",
|
|
|
|
|
set_host_recovery_lock_password: "Set Recovery Lock password",
|
2026-03-26 20:03:25 +00:00
|
|
|
rotated_host_recovery_lock_password:
|
|
|
|
|
"Triggered Recovery Lock password rotation",
|
2026-03-10 17:05:01 +00:00
|
|
|
enabled_recovery_lock_passwords: "Turned on Recovery Lock passwords",
|
|
|
|
|
disabled_recovery_lock_passwords: "Turned off Recovery Lock passwords",
|
2025-12-01 16:48:43 +00:00
|
|
|
resent_configuration_profile: "Resent configuration profile",
|
|
|
|
|
resent_configuration_profile_batch: "Bulk resent configuration profile",
|
|
|
|
|
transferred_hosts: "Transferred hosts",
|
|
|
|
|
uninstalled_software: "Uninstall software",
|
|
|
|
|
unlocked_host: "Unlocked host",
|
|
|
|
|
updated_script: "Updated script",
|
|
|
|
|
user_added_by_sso: "Added user via JIT",
|
|
|
|
|
user_failed_login: "User login: failed",
|
|
|
|
|
user_logged_in: "User login: success",
|
|
|
|
|
wiped_host: "Wiped host",
|
2026-04-22 22:53:59 +00:00
|
|
|
failed_wipe: "Failed wipe",
|
2025-12-01 16:48:43 +00:00
|
|
|
added_conditional_access_integration_microsoft:
|
|
|
|
|
"Added conditional access integration: Microsoft",
|
|
|
|
|
deleted_conditional_access_integration_microsoft:
|
|
|
|
|
"Deleted conditional access integration: Microsoft",
|
|
|
|
|
escrowed_disk_encryption_key: "Escrowed disk encryption key",
|
|
|
|
|
created_custom_variable: "Created custom variable",
|
|
|
|
|
deleted_custom_variable: "Deleted custom variable",
|
|
|
|
|
[ActivityType.HostDeleted]: "Host deleted",
|
|
|
|
|
[ActivityType.AddedHydrant]: "Added certificate authority (CA): Hydrant",
|
|
|
|
|
[ActivityType.DeletedHydrant]: "Deleted certificate authority (CA): Hydrant",
|
|
|
|
|
[ActivityType.EditedHydrant]: "Edited certificate authority (CA): Hydrant",
|
|
|
|
|
[ActivityType.AddedSmallstep]: "Added certificate authority (CA): Smallstep",
|
|
|
|
|
[ActivityType.DeletedSmallstep]:
|
|
|
|
|
"Deleted certificate authority (CA): Smallstep",
|
|
|
|
|
[ActivityType.EditedSmallstep]:
|
|
|
|
|
"Edited certificate authority (CA): Smallstep",
|
|
|
|
|
[ActivityType.AddedCustomESTProxy]:
|
|
|
|
|
"Added certificate authority (CA): custom EST",
|
|
|
|
|
[ActivityType.DeletedCustomESTProxy]:
|
|
|
|
|
"Deleted certificate authority (CA): custom EST",
|
|
|
|
|
[ActivityType.EditedCustomESTProxy]:
|
|
|
|
|
"Edited certificate authority (CA): custom EST",
|
|
|
|
|
[ActivityType.CreatedAndroidProfile]: "Added configuration profile: Android",
|
|
|
|
|
[ActivityType.DeletedAndroidProfile]:
|
|
|
|
|
"Deleted configuration profile: Android",
|
|
|
|
|
[ActivityType.EditedAndroidProfile]:
|
|
|
|
|
"GitOps: edited configuration profiles: Android",
|
2025-12-17 17:08:40 +00:00
|
|
|
[ActivityType.EditedAndroidCertificate]:
|
|
|
|
|
"GitOps: edited certificate templates: Android",
|
2026-03-26 20:06:29 +00:00
|
|
|
[ActivityType.ResentCertificate]: "Resent certificate",
|
2025-12-01 16:48:43 +00:00
|
|
|
[ActivityType.AddedConditionalAccessOkta]: "Added conditional access: Okta",
|
2026-01-29 23:10:07 +00:00
|
|
|
[ActivityType.HostBypassedConditionalAccess]:
|
|
|
|
|
"Host bypassed conditional access",
|
2026-01-29 22:52:57 +00:00
|
|
|
[ActivityType.UpdatedConditionalAccessBypass]:
|
|
|
|
|
"Updated conditional access experience",
|
2025-12-01 16:48:43 +00:00
|
|
|
[ActivityType.DeletedConditionalAccessOkta]:
|
|
|
|
|
"Deleted conditional access: Okta",
|
|
|
|
|
[ActivityType.EditedSetupExperienceSoftware]:
|
|
|
|
|
"Edited setup experience software",
|
|
|
|
|
[ActivityType.EditedHostIdpData]: "Edited host identity provider (IdP) data",
|
2025-12-23 21:23:16 +00:00
|
|
|
[ActivityType.AddedCertificate]: "Added certificate",
|
2025-12-16 23:39:07 +00:00
|
|
|
[ActivityType.DeletedCertificate]: "Deleted certificate",
|
2026-03-31 21:26:39 +00:00
|
|
|
[ActivityType.InstalledCertificate]: "Installed certificate",
|
2026-02-07 13:21:10 +00:00
|
|
|
[ActivityType.EditedEnrollSecrets]: "Edited enroll secrets",
|
Clear passcode frontend (#43084)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42369
# 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. **Done in backend task for whole story**
- [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
* **New Features**
* Added "Clear passcode" action for iOS and iPad hosts in the host
actions menu, accessible only to Premium tier users with appropriate
permissions.
* Added confirmation modal for clearing device passcodes.
* Passcode clearing activity now appears in the activity feed with actor
information.
* Action is conditionally disabled during specific device states (Lost
Mode, pending wipe) with contextual tooltips.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-07 21:36:03 +00:00
|
|
|
[ActivityType.ClearedPasscode]: "Cleared passcode",
|
2026-04-22 20:58:36 +00:00
|
|
|
[ActivityType.EnabledManagedLocalAccount]: "Turned on managed local account",
|
|
|
|
|
[ActivityType.DisabledManagedLocalAccount]:
|
|
|
|
|
"Turned off managed local account",
|
|
|
|
|
[ActivityType.ViewedManagedLocalAccount]: "Viewed managed account",
|
|
|
|
|
[ActivityType.CreatedManagedLocalAccount]: "Created managed account",
|
Add frontend support for enrollment profile renewal failed activity (#44530)
Backend PR: #44511
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41422
<img width="618" height="244" alt="image"
src="https://github.com/user-attachments/assets/c223e37d-7051-46a6-a2ea-6bd1bdcbb53e"
/>
<img width="777" height="780" alt="image"
src="https://github.com/user-attachments/assets/3b9ef4e9-2181-406b-a22e-e6773eba67af"
/>
<img width="649" height="236" alt="image"
src="https://github.com/user-attachments/assets/3985faf0-a1e4-404a-b190-cb623f52339a"
/>
<img width="1083" height="768" alt="image"
src="https://github.com/user-attachments/assets/2d4df607-4b34-435c-88db-6dc0fa09db2e"
/>
# 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. Part of backend PR
- [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
* **New Features**
* Added "Enrollment profile renewal failed" activity type and label.
* Failure entries now appear in activity feeds and host details with a
dedicated activity item and a details flow.
* Users can open a failure details modal showing a status icon, host
name (with fallback), relative failure time, guidance about certificate
expiration, and a link to Fleet support.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-01 18:05:31 +00:00
|
|
|
[ActivityType.FailedEnrollmentProfileRenewal]:
|
|
|
|
|
"Enrollment profile renewal failed",
|
2026-05-01 13:19:45 +00:00
|
|
|
[ActivityType.CreatedLabel]: "Created label",
|
|
|
|
|
[ActivityType.EditedLabel]: "Edited label",
|
|
|
|
|
[ActivityType.DeletedLabel]: "Deleted label",
|
2025-12-01 16:48:43 +00:00
|
|
|
};
|