Skip to content

Fleet UI: Payload-free software installs - #33979

Merged
RachelElysia merged 10 commits into
mainfrom
33736-script-only-pkg-ui
Oct 15, 2025
Merged

Fleet UI: Payload-free software installs#33979
RachelElysia merged 10 commits into
mainfrom
33736-script-only-pkg-ui

Conversation

@RachelElysia

@RachelElysia RachelElysia commented Oct 8, 2025

Copy link
Copy Markdown
Member

Issue

#33736

Description

  • FE code to allow payload free software (create, edit, view)

Checklist for submitter

  • Changes file added for user-visible changes in changes/, orbit/changes/ or ee/fleetd-chrome/changes.
    See Changes files for more information.

Testing

  • Added/updated automated tests

  • QA'd all new/changed functionality manually

Summary by CodeRabbit

  • New Features
    • Added support for script-only packages (.sh, .ps1) across the app, including a new Script Details modal and script-specific statuses (ran, pending, failed).
  • Improvements
    • Status displays, tables, and actions now adapt for script packages (Run/Rerun/Retry).
    • Automatic install guidance updated for script packages; uploader now mentions .sh and .ps1.
    • Version/host counts hidden where not applicable for certain sources.
    • Activity and device setup views reflect script-aware statuses and ordering.
  • Documentation
    • Updated in-app terminology to “My Device Page” and clarified comments.
  • Tests
    • Added comprehensive tests for script modals, activity items, helpers, and status cells.

@RachelElysia
RachelElysia requested a review from a team as a code owner October 8, 2025 14:08
@RachelElysia
RachelElysia marked this pull request as draft October 8, 2025 14:08
@coderabbitai

coderabbitai Bot commented Oct 10, 2025

Copy link
Copy Markdown
Contributor
✅ Actions performed

Summary regeneration triggered.

@ghernandez345

Copy link
Copy Markdown
Contributor

@coderabbitai summary

@coderabbitai

coderabbitai Bot commented Oct 10, 2025

Copy link
Copy Markdown
Contributor
✅ Actions performed

Summary regeneration triggered.

1 similar comment
@coderabbitai

coderabbitai Bot commented Oct 10, 2025

Copy link
Copy Markdown
Contributor
✅ Actions performed

Summary regeneration triggered.

@coderabbitai

coderabbitai Bot commented Oct 10, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds payload-free/script package support across the app: new SoftwareScriptDetailsModal UI with fetching and actions; script-aware statuses, predicates, and icons; expanded interfaces and setup step types; script package handling in host and software pages; and related tests, styling, and utilities. Some existing modals and components now use combined install/uninstall status types.

Changes

Cohort / File(s) Summary
New script details modal
frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tsx, .../SoftwareScriptDetailsModal.tests.tsx, .../index.ts, .../_styles.scss
Introduces a script-focused install details modal with status messaging, contact option, action buttons, script output reveal, and data fetching via device or fleet APIs. Adds tests, styles, and re-export index.
Install/Uninstall details and constants
frontend/components/ActivityDetails/InstallDetails/SoftwareInstallDetailsModal/SoftwareInstallDetailsModal.tsx, .../SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal.tsx, .../VppInstallDetailsModal/VppInstallDetailsModal.tsx, .../constants.ts
Comment updates; unify status types to SoftwareInstallUninstallStatus; add hostSoftwareId to VPP modal buttons; expand predicates/icons to include script states and new helpers for script status mapping.
Interfaces and types
frontend/interfaces/software.ts, frontend/interfaces/setup.ts, frontend/interfaces/package_type.ts, frontend/interfaces/activity.ts
Adds script sources/types, combined install/uninstall status types, script status constants, guards, predicates/icons, and ISoftwareScriptResult. Expands setup step types and introduces IEnhancedSetupStep. Adds source to IActivityDetails.
Dashboard and activity feed
frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx, .../GlobalActivityItem/GlobalActivityItem.tsx, .../GlobalActivityItem/GlobalActivityItem.tests.tsx, frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx, .../InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx
Switch to combined status types; use script-aware predicate with SCRIPT_PACKAGE_SOURCES; pass through source; add tests for script package status rendering.
Software title details and listing
frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareTitleDetailsPage.tsx, .../helpers.ts, .../helpers.tests.ts, .../SoftwareInstallerCard/SoftwareInstallerCard.tsx, .../InstallerStatusTable/InstallerStatusTable.tsx, .../InstallerStatusTable/InstallerStatusTableConfig.tsx, .../SoftwareSummaryCard/SoftwareSummaryCard.tsx, frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTitlesTableConfig.tsx
Thread isScriptPackage flag to cards/tables; adjust headers/data for script statuses (ran/pending/failed); hide versions/host count for sources in NO_VERSION_OR_HOST_DATA_SOURCES; update helper return shape and tests.
Package forms and options
frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx, .../PackageAdvancedOptions/PackageAdvancedOptions.tsx, .../SoftwareOptionsSelector/SoftwareOptionsSelector.tsx
Detect script packages (.sh/.ps1), reset auto-install accordingly, conditionally show advanced options, update uploader messaging, add script types to mappings, and expose isScriptPackage prop.
Host software library and self-service
frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx, .../HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx, .../Software/InstallStatusCell/InstallStatusCell.tsx, .../InstallStatusCell/InstallStatusCell.tests.tsx, .../Software/SelfService/SelfService.tsx, .../SelfService/SelfServiceTableConfig.tsx, .../UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx, .../SoftwareUpdateModal/SoftwareUpdateModal.tsx, .../Software/helpers.tsx, .../Software/helpers.tests.ts, .../Software/HostSoftware.tsx, .../HostInstallerActionCell/HostInstallerActionCell.tsx
Add script details modal flow (state, callbacks, rendering); pass script details callback through table configs; extend status cell to display and open script details; adopt combined/enhanced status types; add script UI states, sorting, and button configs; expand tests.
Device user setup experience
frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx, .../DeviceUserPage.tests.tsx, .../components/SettingUpYourDevice/SettingUpYourDevice.tsx, .../SetupStatusTable/SetupStatusTable.tsx, .../SetupStatusTable/SetupStatusTableConfig.tsx, .../helpers.ts
Migrate to IEnhancedSetupStep; classify steps as software_install, software_script_run, script_run; deterministic ordering; add isSoftwareScriptSetup helper; update tests and data shapes.
Utilities and mocks
frontend/utilities/file/fileUtils.ts, frontend/__mocks__/deviceUserMock.ts, frontend/services/entities/device_user.ts
Map sh/ps1 extensions to platforms; remove type from mock setup step; formatting change in device_user response type.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User as User
  participant HostSW as HostSoftwareLibrary/SelfService
  participant Modal as SoftwareScriptDetailsModal
  participant Query as react-query
  participant API as deviceUserAPI/softwareAPI

  User->>HostSW: Click script status (Ran/Failed/Pending)
  HostSW->>Modal: Open with {host_display_name?, install_uuid, hostSoftware?, deviceAuthToken?}
  Modal->>Query: useQuery(fetchInstallResult)
  alt deviceAuthToken provided
    Query->>API: deviceUserAPI.getSoftwareInstallResult(install_uuid)
  else
    Query->>API: softwareAPI.getSoftwareInstallResult(install_uuid)
  end
  API-->>Query: {status, script_output?, host_display_name?}
  Query-->>Modal: data/error/loading
  Modal->>User: Show StatusMessage (success/pending/error), contact link?, script output (toggle)
  opt Failure on My Device Page
    User->>Modal: Click Rerun
    Modal-->>HostSW: onRerun(hostSoftwareId)
  end
  User->>Modal: Cancel/Done
  Modal-->>HostSW: onCancel()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • iansltx
  • jacobshandling
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 33736-script-only-pkg-ui

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8be42dd and 2cb2296.

📒 Files selected for processing (50)
  • frontend/__mocks__/deviceUserMock.ts (0 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareInstallDetailsModal/SoftwareInstallDetailsModal.tsx (3 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tests.tsx (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tsx (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/_styles.scss (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/index.ts (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal.tsx (2 hunks)
  • frontend/components/ActivityDetails/InstallDetails/VppInstallDetailsModal/VppInstallDetailsModal.tsx (6 hunks)
  • frontend/components/ActivityDetails/InstallDetails/constants.ts (4 hunks)
  • frontend/interfaces/activity.ts (2 hunks)
  • frontend/interfaces/package_type.ts (1 hunks)
  • frontend/interfaces/setup.ts (1 hunks)
  • frontend/interfaces/software.ts (11 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx (2 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tests.tsx (1 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTable.tsx (1 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTableConfig.tsx (5 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/SoftwareInstallerCard.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareSummaryCard/SoftwareSummaryCard.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareTitleDetailsPage.tsx (1 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.tests.ts (2 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.ts (2 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTitlesTableConfig.tsx (2 hunks)
  • frontend/pages/SoftwarePage/components/cards/SoftwareDetailsSummary/SoftwareDetailsSummary.tsx (2 hunks)
  • frontend/pages/SoftwarePage/components/forms/PackageAdvancedOptions/PackageAdvancedOptions.tsx (1 hunks)
  • frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx (4 hunks)
  • frontend/pages/SoftwarePage/components/forms/SoftwareOptionsSelector/SoftwareOptionsSelector.tsx (4 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tests.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx (4 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SettingUpYourDevice.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SetupStatusTable/SetupStatusTable.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SetupStatusTable/SetupStatusTableConfig.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/helpers.ts (1 hunks)
  • frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx (6 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx (3 hunks)
  • frontend/pages/hosts/details/cards/Software/HostSoftware.tsx (1 hunks)
  • frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tests.tsx (18 hunks)
  • frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tsx (8 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/SelfService.tsx (6 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/SelfServiceTableConfig.tsx (3 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx (1 hunks)
  • frontend/pages/hosts/details/cards/Software/SoftwareUpdateModal/SoftwareUpdateModal.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/Software/helpers.tests.ts (1 hunks)
  • frontend/pages/hosts/details/cards/Software/helpers.tsx (4 hunks)
  • frontend/services/entities/device_user.ts (1 hunks)
  • frontend/utilities/file/fileUtils.ts (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai

coderabbitai Bot commented Oct 10, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds script-only package support across UI and types, introduces SoftwareScriptDetailsModal for script install results, updates status models and predicates to unify install/uninstall/script states, threads source-aware logic through activity, host, and software pages, and adjusts setup step typing. Includes tests, styles, helpers, and small comment/typing updates.

Changes

Cohort / File(s) Summary of changes
New Script Details Modal
frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tsx, .../SoftwareScriptDetailsModal/_styles.scss, .../SoftwareScriptDetailsModal/index.ts, .../SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tests.tsx
Adds script-based install details modal with StatusMessage, ModalButtons, contact rendering, data fetching (deviceUserAPI/softwareAPI), error handling, script output reveal; new styles; index re-export; comprehensive tests.
Install/Uninstall/Script Status Unification
frontend/interfaces/software.ts, frontend/components/ActivityDetails/InstallDetails/constants.ts, frontend/pages/hosts/details/cards/Software/helpers.tsx
Introduces unified status types (Enhanced/InstallUninstall), script status constants, predicates/icons; updates mappings and helper logic (including script UI statuses and actions). Exposes SCRIPT_PACKAGE_SOURCES and NO_VERSION_OR_HOST_DATA_SOURCES.
Activity and Host Activity Consumers
frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx, .../GlobalActivityItem/GlobalActivityItem.tsx, .../GlobalActivityItem/GlobalActivityItem.tests.tsx, frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx, .../ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx
Switches to SoftwareInstallUninstallStatus and new predicate with script-source flag; adds source-based logic; adds tests for script run statuses in activity items.
Host Software Library Integration
frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx, .../HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx, .../HostInstallerActionCell/HostInstallerActionCell.tsx
Wires script details modal into host software library (state, handlers, rendering); updates header/config signatures; adopts Enhanced status type in action cell.
Self-Service Integration
frontend/pages/hosts/details/cards/Software/SelfService/SelfService.tsx, .../SelfServiceTableConfig.tsx, .../UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx
Adds script details modal wiring and handler propagation; broadens STATUS_CONFIG typing; passes onShowScriptDetails to InstallStatusCell.
Install Status Cell Enhancements
frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tsx, .../InstallStatusCell.tests.tsx
Adds script-oriented statuses, tooltips, click handling (onShowScriptDetails prop), updates types to unified statuses; adjusts empty-cell tooltip API; updates tests to include new prop.
Software Page: Titles, Installer Card, Tables
frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.ts, .../helpers.tests.ts, .../SoftwareTitleDetailsPage.tsx, .../SoftwareInstallerCard/SoftwareInstallerCard.tsx, .../InstallerStatusTable/InstallerStatusTable.tsx, .../InstallerStatusTable/InstallerStatusTableConfig.tsx, .../SoftwareSummaryCard/SoftwareSummaryCard.tsx, frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTitlesTableConfig.tsx, frontend/pages/SoftwarePage/components/cards/SoftwareDetailsSummary/SoftwareDetailsSummary.tsx
Detects script packages via SCRIPT_PACKAGE_SOURCES; propagates isScriptPackage; table config adds script display statuses and conditional headers/columns; hides versions/hosts for sources in NO_VERSION_OR_HOST_DATA_SOURCES; tests updated for new return shape.
Package Forms and Options
frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx, .../SoftwareOptionsSelector/SoftwareOptionsSelector.tsx, .../PackageAdvancedOptions/PackageAdvancedOptions.tsx
Adds script package detection, messaging, and disables auto-install/advanced options for scripts; updates tooltips and accepted file types; threads isScriptPackage prop.
Setup Steps Typing and Device User Flow
frontend/interfaces/setup.ts, frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx, .../components/SettingUpYourDevice/SettingUpYourDevice.tsx, .../SetupStatusTable/SetupStatusTable.tsx, .../SetupStatusTable/SetupStatusTableConfig.tsx, frontend/pages/hosts/details/DeviceUserPage/helpers.ts, .../DeviceUserPage.tests.tsx, frontend/services/entities/device_user.ts
Adds software_script_run type and IEnhancedSetupStep; updates consumers to new types and sort order; introduces isSoftwareScriptSetup helper; adjusts tests (data shape, case-insensitive matchers); formatting-only change in service interface.
Interfaces and Types: Activity, Package, File utils
frontend/interfaces/activity.ts, frontend/interfaces/package_type.ts, frontend/utilities/file/fileUtils.ts
Adds source to IActivityDetails; adds script-only package types and exports; maps sh/ps1 to platform display names.
VPP and Other Modal Type Alignments
frontend/components/ActivityDetails/InstallDetails/VppInstallDetailsModal/VppInstallDetailsModal.tsx, frontend/pages/hosts/details/cards/Software/SoftwareUpdateModal/SoftwareUpdateModal.tsx
Switches to SoftwareInstallUninstallStatus in public props/types; updates related union annotations.
Comment/Copy Updates
frontend/components/ActivityDetails/InstallDetails/SoftwareInstallDetailsModal/SoftwareInstallDetailsModal.tsx, .../SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal.tsx, frontend/pages/hosts/details/cards/Software/HostSoftware.tsx
Doc/comment text adjustments (DUP → My Device Page, header notes); no functional changes.
Mocks Cleanup
frontend/__mocks__/deviceUserMock.ts
Removes empty string property type from DEFAULT_SETUP_STEP_STATUS_MOCK entry.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant UI as SoftwareScriptDetailsModal
  participant RQ as react-query
  participant API as deviceUserAPI/softwareAPI
  participant Store as State

  User->>UI: Open modal (script package)
  UI->>UI: Determine context (My Device vs Fleet)
  UI->>RQ: useQuery(fetchInstallResult)
  RQ->>API: GET install result (by install_uuid/device token)
  API-->>RQ: 200 OK | 404/401 | error
  alt 200 OK
    RQ-->>UI: installResult
    UI->>UI: Validate status (installed/pending_install/failed_install)
    UI->>User: Render StatusMessage, RevealButton, output textarea
    opt My Device and failed_install
      User->>UI: Click Rerun
      UI->>Store: onRerun(hostSoftwareId)
    end
    User->>UI: Close/Done
  else 404/401 (My Device)
    RQ-->>UI: auth/not found
    UI->>User: DeviceUserError
  else other errors
    RQ-->>UI: error
    UI->>User: DataError
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • iansltx
  • jacobshandling
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 33736-script-only-pkg-ui

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8be42dd and 2cb2296.

📒 Files selected for processing (50)
  • frontend/__mocks__/deviceUserMock.ts (0 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareInstallDetailsModal/SoftwareInstallDetailsModal.tsx (3 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tests.tsx (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tsx (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/_styles.scss (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/index.ts (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal.tsx (2 hunks)
  • frontend/components/ActivityDetails/InstallDetails/VppInstallDetailsModal/VppInstallDetailsModal.tsx (6 hunks)
  • frontend/components/ActivityDetails/InstallDetails/constants.ts (4 hunks)
  • frontend/interfaces/activity.ts (2 hunks)
  • frontend/interfaces/package_type.ts (1 hunks)
  • frontend/interfaces/setup.ts (1 hunks)
  • frontend/interfaces/software.ts (11 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx (2 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tests.tsx (1 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTable.tsx (1 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTableConfig.tsx (5 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/SoftwareInstallerCard.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareSummaryCard/SoftwareSummaryCard.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareTitleDetailsPage.tsx (1 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.tests.ts (2 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.ts (2 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTitlesTableConfig.tsx (2 hunks)
  • frontend/pages/SoftwarePage/components/cards/SoftwareDetailsSummary/SoftwareDetailsSummary.tsx (2 hunks)
  • frontend/pages/SoftwarePage/components/forms/PackageAdvancedOptions/PackageAdvancedOptions.tsx (1 hunks)
  • frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx (4 hunks)
  • frontend/pages/SoftwarePage/components/forms/SoftwareOptionsSelector/SoftwareOptionsSelector.tsx (4 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tests.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx (4 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SettingUpYourDevice.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SetupStatusTable/SetupStatusTable.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SetupStatusTable/SetupStatusTableConfig.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/helpers.ts (1 hunks)
  • frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx (6 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx (3 hunks)
  • frontend/pages/hosts/details/cards/Software/HostSoftware.tsx (1 hunks)
  • frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tests.tsx (18 hunks)
  • frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tsx (8 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/SelfService.tsx (6 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/SelfServiceTableConfig.tsx (3 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx (1 hunks)
  • frontend/pages/hosts/details/cards/Software/SoftwareUpdateModal/SoftwareUpdateModal.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/Software/helpers.tests.ts (1 hunks)
  • frontend/pages/hosts/details/cards/Software/helpers.tsx (4 hunks)
  • frontend/services/entities/device_user.ts (1 hunks)
  • frontend/utilities/file/fileUtils.ts (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai

coderabbitai Bot commented Oct 10, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds script-package support across UI: new SoftwareScriptDetailsModal, script status predicates/icons, and propagation of isScriptPackage/source-aware logic. Migrates many types from SoftwareInstallStatus to SoftwareInstallUninstallStatus and introduces Enhanced variants. Updates Device User setup-step typing and sorting. Extends software pages, host library, and self-service to open script details. Tests and styles included.

Changes

Cohort / File(s) Summary
Script details modal (new feature)
frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tsx, .../SoftwareScriptDetailsModal/_styles.scss, .../SoftwareScriptDetailsModal/index.ts, .../SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tests.tsx
New modal for script-based installs with status messaging, actions (Rerun/Done), contact link, script output reveal, react-query data flow (fleet vs device). Styling and barrel export added. Comprehensive tests for status messaging and footer buttons.
Status/type model expansion
frontend/interfaces/software.ts, frontend/components/ActivityDetails/InstallDetails/constants.ts, frontend/interfaces/package_type.ts
Introduces script package sources (sh, ps1), EnhancedSoftwareInstallUninstallStatus, predicates/icons for script statuses, new helpers for script details, and expands PackageType to include script-only types.
Activity feed adjustments
frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx, .../GlobalActivityItem/GlobalActivityItem.tsx, .../GlobalActivityItem/GlobalActivityItem.tests.tsx
Switches to install/uninstall predicate with source-aware script handling; imports updated. Adds tests for run/pending/failed run copy.
Software title pages (script-aware UI)
frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTable.tsx, .../InstallerStatusTable/InstallerStatusTableConfig.tsx, .../SoftwareInstallerCard/SoftwareInstallerCard.tsx, .../SoftwareSummaryCard/SoftwareSummaryCard.tsx, .../SoftwareTitleDetailsPage.tsx, .../helpers.ts, .../helpers.tests.ts, frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTitlesTableConfig.tsx
Threads isScriptPackage to status tables/cards; toggles Ran/Pending/Failed script display; hides versions/host counts using NO_VERSION_OR_HOST_DATA_SOURCES; derives isScriptPackage from source in helpers; updates tests.
Software package forms
frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx, .../SoftwareOptionsSelector/SoftwareOptionsSelector.tsx, .../PackageAdvancedOptions/PackageAdvancedOptions.tsx
Detects .sh/.ps1 uploads; disables automatic install for scripts; conditional advanced options; adds script-aware tooltip and mapping texts; passes isScriptPackage to options selector.
Host details: library and self-service
frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx, .../HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx, .../Software/SelfService/SelfService.tsx, .../Software/SelfService/SelfServiceTableConfig.tsx, .../Software/InstallStatusCell/InstallStatusCell.tsx, .../Software/InstallStatusCell/InstallStatusCell.tests.tsx, .../Software/SoftwareUpdateModal/SoftwareUpdateModal.tsx, .../Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx, frontend/pages/hosts/details/helpers.tsx, .../helpers.tests.ts
Adds onShowScriptDetails plumbed through tables to open SoftwareScriptDetailsModal; InstallStatusCell gains script status handling, tooltips, and click-through; updates types to SoftwareInstallUninstallStatus/Enhanced; SelfService renders script modal; activity item uses new predicate with source awareness; helper extends UI status logic, actions, and sort for scripts; tests updated/added.
Device User setup steps
frontend/interfaces/setup.ts, frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx, .../components/SettingUpYourDevice/SettingUpYourDevice.tsx, .../SetupStatusTable/SetupStatusTable.tsx, .../SetupStatusTable/SetupStatusTableConfig.tsx, frontend/pages/hosts/details/DeviceUserPage/helpers.ts, frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tests.tsx, frontend/services/entities/device_user.ts, frontend/__mocks__/deviceUserMock.ts
Expands SETUP_STEP_TYPES; introduces IEnhancedSetupStep (required type); adds isSoftwareScriptSetup; updates components and sorting to distinguish software_install, software_script_run, script_run; adjusts tests and mock shapes; minor formatting in service type.
Other modal/type tweaks
frontend/components/ActivityDetails/InstallDetails/VppInstallDetailsModal/VppInstallDetailsModal.tsx, .../SoftwareInstallDetailsModal/SoftwareInstallDetailsModal.tsx, .../SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal.tsx
Type signatures updated to SoftwareInstallUninstallStatus; comments updated to “My Device Page”; no logic changes.
Host details and misc
frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx, frontend/pages/hosts/details/cards/Software/HostSoftware.tsx
Switch to SoftwareInstallUninstallStatus type; minor comment update; behavior unchanged.
Utilities
frontend/utilities/file/fileUtils.ts
Adds sh → Linux and ps1 → Windows to FILE_EXTENSIONS_TO_PLATFORM_DISPLAY_NAME.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor U as User
  participant HS as HostSoftwareLibrary/SelfService
  participant ISC as InstallStatusCell
  participant MOD as SoftwareScriptDetailsModal
  participant Q as react-query
  participant API as Fleet API
  participant DEV as Device-auth API

  U->>HS: Click script status (Ran/Failed/Run)
  HS->>ISC: Render status cell with onShowScriptDetails
  ISC-->>HS: onShowScriptDetails(hostSoftware)
  HS->>MOD: Open SoftwareScriptDetailsModal(details)

  rect rgba(200,235,255,0.3)
    note over MOD: Load script install details
    MOD->>Q: useQuery(key, fetchFn)
    alt Device page
      Q->>DEV: GET /device/.../script_result
      DEV-->>Q: result or error
    else Fleet UI
      Q->>API: GET /hosts/{id}/software/{hostSoftwareId}/script_result
      API-->>Q: result or error
    end
    Q-->>MOD: data | error | loading
    MOD-->>U: Show status, host/app, output (reveal), contact option
  end

  alt Failure from My Device page
    U->>MOD: Click Rerun
    MOD->>HS: onRerun(hostSoftwareId)
    HS-->>U: Trigger reinstall action
  else Any status
    U->>MOD: Click Done/Cancel
    MOD-->>HS: onExit()
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • iansltx
  • jacobshandling
  • sgress454
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 33736-script-only-pkg-ui

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8be42dd and 2cb2296.

📒 Files selected for processing (50)
  • frontend/__mocks__/deviceUserMock.ts (0 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareInstallDetailsModal/SoftwareInstallDetailsModal.tsx (3 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tests.tsx (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/SoftwareScriptDetailsModal.tsx (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/_styles.scss (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareScriptDetailsModal/index.ts (1 hunks)
  • frontend/components/ActivityDetails/InstallDetails/SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal.tsx (2 hunks)
  • frontend/components/ActivityDetails/InstallDetails/VppInstallDetailsModal/VppInstallDetailsModal.tsx (6 hunks)
  • frontend/components/ActivityDetails/InstallDetails/constants.ts (4 hunks)
  • frontend/interfaces/activity.ts (2 hunks)
  • frontend/interfaces/package_type.ts (1 hunks)
  • frontend/interfaces/setup.ts (1 hunks)
  • frontend/interfaces/software.ts (11 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx (2 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tests.tsx (1 hunks)
  • frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTable.tsx (1 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/InstallerStatusTable/InstallerStatusTableConfig.tsx (5 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareInstallerCard/SoftwareInstallerCard.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareSummaryCard/SoftwareSummaryCard.tsx (3 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwareTitleDetailsPage.tsx (1 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.tests.ts (2 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/helpers.ts (2 hunks)
  • frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTitlesTableConfig.tsx (2 hunks)
  • frontend/pages/SoftwarePage/components/cards/SoftwareDetailsSummary/SoftwareDetailsSummary.tsx (2 hunks)
  • frontend/pages/SoftwarePage/components/forms/PackageAdvancedOptions/PackageAdvancedOptions.tsx (1 hunks)
  • frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx (4 hunks)
  • frontend/pages/SoftwarePage/components/forms/SoftwareOptionsSelector/SoftwareOptionsSelector.tsx (4 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tests.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx (4 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SettingUpYourDevice.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SetupStatusTable/SetupStatusTable.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/components/SettingUpYourDevice/SetupStatusTable/SetupStatusTableConfig.tsx (2 hunks)
  • frontend/pages/hosts/details/DeviceUserPage/helpers.ts (1 hunks)
  • frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx (6 hunks)
  • frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx (3 hunks)
  • frontend/pages/hosts/details/cards/Software/HostSoftware.tsx (1 hunks)
  • frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tests.tsx (18 hunks)
  • frontend/pages/hosts/details/cards/Software/InstallStatusCell/InstallStatusCell.tsx (8 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/SelfService.tsx (6 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/SelfServiceTableConfig.tsx (3 hunks)
  • frontend/pages/hosts/details/cards/Software/SelfService/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx (1 hunks)
  • frontend/pages/hosts/details/cards/Software/SoftwareUpdateModal/SoftwareUpdateModal.tsx (2 hunks)
  • frontend/pages/hosts/details/cards/Software/helpers.tests.ts (1 hunks)
  • frontend/pages/hosts/details/cards/Software/helpers.tsx (4 hunks)
  • frontend/services/entities/device_user.ts (1 hunks)
  • frontend/utilities/file/fileUtils.ts (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ghernandez345 ghernandez345 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just some comments of things i noticed. nothing major requiring change. let me know when its ready for final review and i'll take a look again

enabled: !!isInstalledByFleet,
...DEFAULT_USE_QUERY_OPTIONS,
staleTime: 3000,
select: (data) => data.results as ISoftwareScriptResult,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

im wondering of instead of dynamically handling which request is called we jsut have two use query method calls; one for deviceUserAPI.getSoftwareInstallResult and one for softwareAPI.getSoftwareInstallResult. and enabling one and disabling the other depending on deviceAuthToken. you would have to do the type casting here. what do you think?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bulk of the useQuery setup is the same, so I'm wondering why we’d want to introduce two separate calls instead of handling the conditional inside one? This would be the fourth modal that follows this same pattern, so keeping it consistent and avoiding duplicate logic seems cleaner to me. Thoughts @ghernandez345 ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The modals that follow this pattern:
Screenshot 2025-10-10 at 10 15 34 AM

@ghernandez345 ghernandez345 Oct 10, 2025

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets chat about this one next wed. Its not blocking. its more of a question if having multiple useQuery calls gives us something better than making the request method dynamic. Im not sure it does but thought it was worth asking about it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think at some point we can create one config that has the keys as the statuses and the value being all the different config settings instead of redefining the same key across multiple objects. Would make it easier to see all the settings for a status in one object. thats something for the future, though.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ooo that would be nice. like one ui_status object to rule them all each status with the same keys like softwareTitleStatusTooltip selfServiceTableStatusTooltip selfServiceTableStatus selfServiceTableInstallText etc etc all be in one giant config?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yah something like that. maybe we break it up a bit but the idea being having something that makes it easy to have a status and get the config options needed for that status.

details={{
host_display_name: hostDisplayName,
install_uuid:
selectedHostSWScriptDetails.software_package?.last_install

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whenever I have this, I just do the check before rendering the component. so in this case it would be the check for install_uuid in the same line as the check for selectedHostSWScriptDetails. Then you are always sure to have that value and the Modal component wouldnt need to do some funny typing to handle undefined.

@codecov

codecov Bot commented Oct 14, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 57.21154% with 89 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.17%. Comparing base (6e39117) to head (c7ca362).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...eScriptDetailsModal/SoftwareScriptDetailsModal.tsx 47.50% 42 Missing ⚠️
.../cards/HostSoftwareLibrary/HostSoftwareLibrary.tsx 0.00% 8 Missing ⚠️
...end/pages/hosts/details/cards/Software/helpers.tsx 55.55% 8 Missing ⚠️
frontend/interfaces/software.ts 69.56% 7 Missing ⚠️
...s/Software/InstallStatusCell/InstallStatusCell.tsx 73.91% 5 Missing and 1 partial ⚠️
...details/cards/Software/SelfService/SelfService.tsx 42.85% 4 Missing ⚠️
...nstallerStatusTable/InstallerStatusTableConfig.tsx 70.00% 3 Missing ⚠️
...wareActivityItem/InstalledSoftwareActivityItem.tsx 0.00% 3 Missing ⚠️
...onents/ActivityDetails/InstallDetails/constants.ts 75.00% 2 Missing ⚠️
...Titles/SoftwareTable/SoftwareTitlesTableConfig.tsx 0.00% 2 Missing ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #33979      +/-   ##
==========================================
- Coverage   64.23%   64.17%   -0.06%     
==========================================
  Files        2059     2058       -1     
  Lines      207035   206248     -787     
  Branches     6826     6992     +166     
==========================================
- Hits       132988   132368     -620     
+ Misses      63611    63497     -114     
+ Partials    10436    10383      -53     
Flag Coverage Δ
frontend 53.55% <57.21%> (-0.11%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@RachelElysia
RachelElysia marked this pull request as ready for review October 14, 2025 14:39
@RachelElysia

Copy link
Copy Markdown
Member Author

Re: failing tests, seems to be BE related off main but already DMed @ghernandez345 saying I'm not going to rebase on main to see if it fixes it until he tells me it's okay since sometimes that removes a github user's review progress.

Screenshot 2025-10-14 at 10 59 30 AM

ghernandez345
ghernandez345 previously approved these changes Oct 15, 2025
@RachelElysia
RachelElysia merged commit 17245ab into main Oct 15, 2025
15 checks passed
@RachelElysia
RachelElysia deleted the 33736-script-only-pkg-ui branch October 15, 2025 13:41
@coderabbitai coderabbitai Bot mentioned this pull request Oct 15, 2025
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants