2024-12-19 17:09:38 +00:00
|
|
|
import { ILabelSoftwareTitle } from "./label";
|
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",
|
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",
|
2024-02-12 18:23:57 +00:00
|
|
|
// Note: Both "enabled_disk_encryption" and "enabled_macos_disk_encryption" display the same
|
|
|
|
|
// message. The latter is deprecated in the API but it is retained here for backwards compatibility.
|
|
|
|
|
EnabledDiskEncryption = "enabled_disk_encryption",
|
2023-03-15 20:08:04 +00:00
|
|
|
EnabledMacDiskEncryption = "enabled_macos_disk_encryption",
|
2024-02-12 18:23:57 +00:00
|
|
|
// Note: Both "disabled_disk_encryption" and "disabled_macos_disk_encryption" display the same
|
|
|
|
|
// message. The latter is deprecated in the API but it is retained here for backwards compatibility.
|
|
|
|
|
DisabledDiskEncryption = "disabled_disk_encryption",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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
|
2025-05-21 20:47:11 +00:00
|
|
|
| ActivityType.ReadHostDiskEncryptionKey
|
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
|
|
|
|
|
| ActivityType.CanceledUninstallSoftware;
|
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;
|
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;
|
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;
|
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",
|
|
|
|
|
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",
|
|
|
|
|
applied_spec_saved_query: "GitOps: edited queries",
|
|
|
|
|
applied_spec_team: "GitOps: edited teams",
|
|
|
|
|
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",
|
|
|
|
|
changed_macos_setup_assistant: "Edited macOS automatic enrollment profile",
|
|
|
|
|
changed_user_global_role: "Edited user's role: global",
|
|
|
|
|
changed_user_team_role: "Edited user's role: team",
|
|
|
|
|
created_declaration_profile: "Added declaration (DDM) profile",
|
|
|
|
|
created_macos_profile: "Added configuration profile: Apple",
|
|
|
|
|
created_pack: "Created pack",
|
|
|
|
|
created_policy: "Created policy",
|
|
|
|
|
created_saved_query: "Added query",
|
|
|
|
|
created_team: "Added team",
|
|
|
|
|
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",
|
|
|
|
|
deleted_multiple_saved_query: "Bulk deleted queries",
|
|
|
|
|
deleted_ndes_scep_proxy: "Deleted certificate authority (CA): NDES",
|
|
|
|
|
deleted_pack: "Deleted pack",
|
|
|
|
|
deleted_policy: "Deleted policy",
|
|
|
|
|
deleted_saved_query: "Deleted query",
|
|
|
|
|
deleted_script: "Deleted script",
|
|
|
|
|
deleted_software: "Deleted software",
|
|
|
|
|
deleted_team: "Deleted team",
|
|
|
|
|
deleted_user: "Deleted user",
|
|
|
|
|
deleted_user_global_role: "Deleted user's role: global",
|
|
|
|
|
deleted_user_team_role: "Deleted user's role: team",
|
|
|
|
|
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",
|
|
|
|
|
disabled_gitops_mode: "Disabled GitOps mode",
|
|
|
|
|
disabled_disk_encryption: "Turned off disk encryption",
|
|
|
|
|
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",
|
|
|
|
|
edited_saved_query: "Edited query",
|
|
|
|
|
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",
|
|
|
|
|
enabled_gitops_mode: "Enabled GitOps mode",
|
|
|
|
|
enabled_disk_encryption: "Turned on disk encryption",
|
|
|
|
|
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",
|
|
|
|
|
live_query: "Ran live query",
|
|
|
|
|
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",
|
|
|
|
|
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",
|
|
|
|
|
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",
|
2025-12-01 16:48:43 +00:00
|
|
|
[ActivityType.AddedConditionalAccessOkta]: "Added conditional access: Okta",
|
|
|
|
|
[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",
|
2025-12-01 16:48:43 +00:00
|
|
|
};
|