Skip to content

Use type imports - #758

Merged
celdrake merged 1 commit into
flightctl:mainfrom
celdrake:use-type-imports
Aug 5, 2026
Merged

Use type imports#758
celdrake merged 1 commit into
flightctl:mainfrom
celdrake:use-type-imports

Conversation

@celdrake

@celdrake celdrake commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Since now Coderabbitai highlights missing "type" imports across modified code, better to fix all in one go to have clean reviews.

New eslint rules that appear with npm run lint:

flight-control/flightctl-ui/libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/utils.ts
  16:1  error  All imports in the declaration are only used as types. Use `import type`  @typescript-eslint/consistent-type-imports

or

flight-control/flightctl-ui/libs/ui-components/src/components/Catalog/CatalogItemCard.tsx
  15:1  error  Imports "CatalogItem" are only used as type  @typescript-eslint/consistent-type-imports

@celdrake

celdrake commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai is there any change in commit 31f27b337d5b4b6b38a48f2c18bb2dd84224ccf1tat's not related to the "import type" new rule?

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 330 files, which is 30 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 4dfd3692-a290-443f-8843-898cf877af24

📥 Commits

Reviewing files that changed from the base of the PR and between 3372a39 and 950a05a.

📒 Files selected for processing (330)
  • apps/ocp-plugin/src/components/AppContext/AppContext.tsx
  • apps/ocp-plugin/src/components/Devices/DeviceDetailsPage.tsx
  • apps/ocp-plugin/src/hooks/useFetch.ts
  • apps/ocp-plugin/src/types/k8s.ts
  • apps/ocp-plugin/src/utils/apiCalls.ts
  • apps/ocp-plugin/src/utils/clusters.ts
  • apps/standalone/src/app/components/AppLayout/AppToolbar.tsx
  • apps/standalone/src/app/components/Login/LoginPage.tsx
  • apps/standalone/src/app/hooks/useFetch.ts
  • apps/standalone/src/app/hooks/useStandaloneAppContext.ts
  • apps/standalone/src/app/routes.tsx
  • apps/standalone/src/app/utils/apiCalls.ts
  • eslint.config.js
  • libs/ui-components/src/components/Application/ApplicationPortsTable.tsx
  • libs/ui-components/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetails.tsx
  • libs/ui-components/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetailsTab.tsx
  • libs/ui-components/src/components/AuthProvider/AuthProviderDetails/RoleAssigmentDetails.tsx
  • libs/ui-components/src/components/AuthProvider/AuthProviderRow.tsx
  • libs/ui-components/src/components/AuthProvider/AuthProvidersPage.tsx
  • libs/ui-components/src/components/AuthProvider/CreateAuthProvider/AuthOrganizationAssignment.tsx
  • libs/ui-components/src/components/AuthProvider/CreateAuthProvider/CreateAuthProvider.tsx
  • libs/ui-components/src/components/AuthProvider/CreateAuthProvider/CreateAuthProviderForm.tsx
  • libs/ui-components/src/components/AuthProvider/CreateAuthProvider/RoleAssignmentSection.tsx
  • libs/ui-components/src/components/AuthProvider/CreateAuthProvider/types.ts
  • libs/ui-components/src/components/AuthProvider/CreateAuthProvider/utils.ts
  • libs/ui-components/src/components/AuthProvider/TestConnectionModal/TestConnectionModal.tsx
  • libs/ui-components/src/components/AuthProvider/useAuthProviders.ts
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/AddCatalogItemWizard.tsx
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/CreateCatalogModal.tsx
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/steps/GeneralInfoStep.tsx
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/steps/TypeConfigStep.tsx
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/steps/VersionStep.tsx
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/types.ts
  • libs/ui-components/src/components/Catalog/AddCatalogItemWizard/utils.ts
  • libs/ui-components/src/components/Catalog/CatalogItemCard.tsx
  • libs/ui-components/src/components/Catalog/CatalogItemDetails.tsx
  • libs/ui-components/src/components/Catalog/CatalogPage.tsx
  • libs/ui-components/src/components/Catalog/CatalogPageToolbar.tsx
  • libs/ui-components/src/components/Catalog/EditWizard/EditAppWizard.tsx
  • libs/ui-components/src/components/Catalog/EditWizard/EditOsWizard.tsx
  • libs/ui-components/src/components/Catalog/EditWizard/steps/ReviewStep.tsx
  • libs/ui-components/src/components/Catalog/EditWizard/steps/UpdateGraph.tsx
  • libs/ui-components/src/components/Catalog/EditWizard/steps/UpdateStep.tsx
  • libs/ui-components/src/components/Catalog/EditWizard/types.ts
  • libs/ui-components/src/components/Catalog/InstallWizard/InstallAppWizard.tsx
  • libs/ui-components/src/components/Catalog/InstallWizard/InstallOsWizard.tsx
  • libs/ui-components/src/components/Catalog/InstallWizard/UpdateSuccessPage.tsx
  • libs/ui-components/src/components/Catalog/InstallWizard/steps/AppConfigStep.tsx
  • libs/ui-components/src/components/Catalog/InstallWizard/steps/SelectTargetStep.tsx
  • libs/ui-components/src/components/Catalog/InstallWizard/steps/SpecificationsStep.tsx
  • libs/ui-components/src/components/Catalog/InstalledSoftwareItem.tsx
  • libs/ui-components/src/components/Catalog/ResourceCatalog/ResourceCatalogPage.tsx
  • libs/ui-components/src/components/Catalog/useCatalogFilter.ts
  • libs/ui-components/src/components/Catalog/useCatalogItems.ts
  • libs/ui-components/src/components/Catalog/useSubmitCatalogForm.ts
  • libs/ui-components/src/components/DetailsPage/DetailsNotFound.tsx
  • libs/ui-components/src/components/DetailsPage/DetailsPage.tsx
  • libs/ui-components/src/components/DetailsPage/DetailsPageActions.tsx
  • libs/ui-components/src/components/DetailsPage/DetailsPageCard.tsx
  • libs/ui-components/src/components/DetailsPage/Tables/ApplicationsTable.tsx
  • libs/ui-components/src/components/DetailsPage/Tables/ConditionsTable.tsx
  • libs/ui-components/src/components/DetailsPage/Tables/SystemdUnitsTable.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceAliasEdit.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceApplications.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceDetailsPage.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceDetailsTab.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceDetailsTabContent/SystemResourcesContent.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceFleet.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceLogsEmptyState.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceLogsInnerToolbar.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceLogsLevelField.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceLogsSearchToolbar.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceLogsTab.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceLogsTimeRangeField.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceSystemdUnits.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/DeviceVulnerabilities.tsx
  • libs/ui-components/src/components/Device/DeviceDetails/TerminalTab.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DecommissionedDeviceTableRow.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DecommissionedDevicesTable.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DeviceFilterSelect.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DeviceNameOnlyToolbarFilter.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DeviceTableToolbar.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DeviceToolbarFilters.tsx
  • libs/ui-components/src/components/Device/DevicesPage/DevicesPage.tsx
  • libs/ui-components/src/components/Device/DevicesPage/EnrolledDeviceTableRow.tsx
  • libs/ui-components/src/components/Device/DevicesPage/EnrolledDevicesTable.tsx
  • libs/ui-components/src/components/Device/DevicesPage/types.ts
  • libs/ui-components/src/components/Device/DevicesPage/useDeviceBackendFilters.ts
  • libs/ui-components/src/components/Device/DevicesPage/useDevices.ts
  • libs/ui-components/src/components/Device/EditDeviceWizard/EditDeviceWizard.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationHelmForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVariablesForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVmForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVolumeForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ReviewApplications.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.tsx
  • libs/ui-components/src/components/Device/EditDeviceWizard/useEditDevice.ts
  • libs/ui-components/src/components/Device/EditDeviceWizard/utils.ts
  • libs/ui-components/src/components/DynamicForm/DynamicForm.tsx
  • libs/ui-components/src/components/DynamicForm/FieldTemplate.tsx
  • libs/ui-components/src/components/DynamicForm/FormWidget.tsx
  • libs/ui-components/src/components/DynamicForm/VolumeImageField.tsx
  • libs/ui-components/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.tsx
  • libs/ui-components/src/components/EnrollmentRequest/EnrollmentRequestList.tsx
  • libs/ui-components/src/components/EnrollmentRequest/EnrollmentRequestTableRow.tsx
  • libs/ui-components/src/components/EnrollmentRequest/EnrollmentRequestTableToolbar.tsx
  • libs/ui-components/src/components/EnrollmentRequest/useEnrollmentRequests.ts
  • libs/ui-components/src/components/Events/EventItem.tsx
  • libs/ui-components/src/components/Events/EventsCard.tsx
  • libs/ui-components/src/components/Events/useEvents.ts
  • libs/ui-components/src/components/Fleet/CreateFleet/CreateFleetWizard.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/fleetSpecUtils.ts
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/ReviewStep.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.tsx
  • libs/ui-components/src/components/Fleet/CreateFleet/useEditFleet.ts
  • libs/ui-components/src/components/Fleet/CreateFleet/utils.ts
  • libs/ui-components/src/components/Fleet/FleetDetails/FleetDetailsContent.tsx
  • libs/ui-components/src/components/Fleet/FleetDetails/FleetDetailsPage.tsx
  • libs/ui-components/src/components/Fleet/FleetDetails/FleetDevicesCharts.tsx
  • libs/ui-components/src/components/Fleet/FleetDetails/FleetDevicesCount.tsx
  • libs/ui-components/src/components/Fleet/FleetDetails/FleetRestoreBanner.tsx
  • libs/ui-components/src/components/Fleet/FleetDetails/FleetYaml.tsx
  • libs/ui-components/src/components/Fleet/FleetRow.tsx
  • libs/ui-components/src/components/Fleet/FleetStatus.tsx
  • libs/ui-components/src/components/Fleet/FleetsPage.tsx
  • libs/ui-components/src/components/Fleet/useFleets.ts
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/CreateImageBuildWizard.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/CreateImageBuildWizardFooter.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/steps/CatalogStep.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/steps/OutputImageStep.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/steps/RegistrationStep.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/steps/ReviewStep.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/steps/SourceImageStep.tsx
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/types.ts
  • libs/ui-components/src/components/ImageBuilds/CreateImageBuildWizard/utils.ts
  • libs/ui-components/src/components/ImageBuilds/ImageBuildAndExportStatus.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageBuildDetails/ImageBuildDetailsTab.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageBuildDetails/ImageBuildExportsGallery.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageBuildDetails/ImageBuildLogsTab.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageBuildDetails/ImageBuildYaml.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageBuildRow.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageBuildsPage.tsx
  • libs/ui-components/src/components/ImageBuilds/ImageExportCards.tsx
  • libs/ui-components/src/components/ImageBuilds/ImagePromotionsContext.tsx
  • libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/NewVersionImageBuildWizard.tsx
  • libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/NewVersionImageBuildWizardFooter.tsx
  • libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/steps/NewVersionStep.tsx
  • libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/steps/ReviewStep.tsx
  • libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/types.ts
  • libs/ui-components/src/components/ImageBuilds/NewVersionImageBuildWizard/utils.ts
  • libs/ui-components/src/components/ImageBuilds/OciRegistriesContext.tsx
  • libs/ui-components/src/components/ImageBuilds/ReviewCommon.tsx
  • libs/ui-components/src/components/ImageBuilds/useImageBuilds.ts
  • libs/ui-components/src/components/ImagePromotion/DeleteImagePromotionModal.tsx
  • libs/ui-components/src/components/ImagePromotion/ImagePromotionForm.tsx
  • libs/ui-components/src/components/ImagePromotion/ImagePromotionModal.tsx
  • libs/ui-components/src/components/ImagePromotion/ImagePromotionStatus.tsx
  • libs/ui-components/src/components/ImagePromotion/types.ts
  • libs/ui-components/src/components/ImagePromotion/utils.ts
  • libs/ui-components/src/components/ImportResourceWizard/ImportResourceWizard.tsx
  • libs/ui-components/src/components/ImportResourceWizard/steps/RepositoryStep.tsx
  • libs/ui-components/src/components/ImportResourceWizard/steps/ResourceSyncStep.tsx
  • libs/ui-components/src/components/ImportResourceWizard/steps/ReviewStep.tsx
  • libs/ui-components/src/components/ImportResourceWizard/types.ts
  • libs/ui-components/src/components/ListPage/ListPage.tsx
  • libs/ui-components/src/components/ListPage/ListPageActions.tsx
  • libs/ui-components/src/components/ListPage/types.ts
  • libs/ui-components/src/components/Login/ProviderSelector.tsx
  • libs/ui-components/src/components/Login/TokenLoginForm.tsx
  • libs/ui-components/src/components/Masthead/CommandLineToolsPage.tsx
  • libs/ui-components/src/components/Masthead/UserPreferencesModal.tsx
  • libs/ui-components/src/components/Masthead/UserPreferencesProvider.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Alerts/AlertsCard.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Status/ApplicationStatusChart.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Status/DeviceStatusChart.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Status/StatusCard.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Status/StatusCardFilters.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Status/SystemUpdateStatusChart.tsx
  • libs/ui-components/src/components/OverviewPage/Cards/Status/utils.ts
  • libs/ui-components/src/components/Repository/CreateRepository/CreateRepository.tsx
  • libs/ui-components/src/components/Repository/CreateRepository/CreateRepositoryForm.tsx
  • libs/ui-components/src/components/Repository/CreateRepository/CreateResourceSyncsForm.tsx
  • libs/ui-components/src/components/Repository/CreateRepository/types.ts
  • libs/ui-components/src/components/Repository/CreateRepository/utils.ts
  • libs/ui-components/src/components/Repository/RepositoryDetails/ConfigSourceSyncDetails.tsx
  • libs/ui-components/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.tsx
  • libs/ui-components/src/components/Repository/RepositoryDetails/RepositoryDetails.tsx
  • libs/ui-components/src/components/Repository/RepositoryDetails/RepositoryGeneralDetailsCard.tsx
  • libs/ui-components/src/components/Repository/RepositoryDetails/RepositorySource.tsx
  • libs/ui-components/src/components/Repository/RepositoryDetails/RepositorySourceList.tsx
  • libs/ui-components/src/components/Repository/RepositoryList.tsx
  • libs/ui-components/src/components/Repository/useRepositories.ts
  • libs/ui-components/src/components/ResourceSync/RepositoryResourceSyncList.tsx
  • libs/ui-components/src/components/ResourceSync/ResourceSyncImportStatus.tsx
  • libs/ui-components/src/components/ResourceSync/ResourceSyncStatus.tsx
  • libs/ui-components/src/components/ResourceSync/ResourceSyncToRepository.tsx
  • libs/ui-components/src/components/SecurityOverview/SecurityOverviewSummary.tsx
  • libs/ui-components/src/components/SecurityOverview/VulnerabilitiesTable.tsx
  • libs/ui-components/src/components/SecurityOverview/VulnerabilitiesTableRow.tsx
  • libs/ui-components/src/components/SecurityOverview/VulnerabilityDetailsDrawer.tsx
  • libs/ui-components/src/components/SecurityOverview/VulnerabilityImpact.tsx
  • libs/ui-components/src/components/SecurityOverview/VulnerabilityReferences.tsx
  • libs/ui-components/src/components/Status/ApplicationSummaryStatus.tsx
  • libs/ui-components/src/components/Status/DeviceLifecycleStatus.tsx
  • libs/ui-components/src/components/Status/DeviceResourceStatus.tsx
  • libs/ui-components/src/components/Status/EnrollmentRequestStatus.tsx
  • libs/ui-components/src/components/Status/IntegrityStatus.tsx
  • libs/ui-components/src/components/Status/RepositoryStatus.tsx
  • libs/ui-components/src/components/Status/StatusDisplay.tsx
  • libs/ui-components/src/components/Status/SystemUpdateStatus.tsx
  • libs/ui-components/src/components/Status/SystemdStatus.tsx
  • libs/ui-components/src/components/Status/VulnerabilitySeverityStatus.tsx
  • libs/ui-components/src/components/Status/utils.ts
  • libs/ui-components/src/components/SystemRestore/SuspendedDevicesAlert.tsx
  • libs/ui-components/src/components/SystemRestore/SystemRestoreBanners.tsx
  • libs/ui-components/src/components/Table/Table.tsx
  • libs/ui-components/src/components/Table/TablePagination.tsx
  • libs/ui-components/src/components/Table/TableTextSearch.tsx
  • libs/ui-components/src/components/TabsNav/TabsNav.tsx
  • libs/ui-components/src/components/Terminal/AppTerminal.tsx
  • libs/ui-components/src/components/Terminal/Terminal.tsx
  • libs/ui-components/src/components/charts/DonutChart.tsx
  • libs/ui-components/src/components/charts/utils.ts
  • libs/ui-components/src/components/common/ActionsDropdownList.tsx
  • libs/ui-components/src/components/common/CodeEditor/CodeEditorTheme.ts
  • libs/ui-components/src/components/common/CodeEditor/YamlEditor.tsx
  • libs/ui-components/src/components/common/CodeEditor/useShortcutPopover.tsx
  • libs/ui-components/src/components/common/ErrorBoundary.tsx
  • libs/ui-components/src/components/common/FlightCtlModal.tsx
  • libs/ui-components/src/components/common/FlightCtlWizardFooter.tsx
  • libs/ui-components/src/components/common/LeaveFormConfirmation.tsx
  • libs/ui-components/src/components/common/OrganizationGuard.tsx
  • libs/ui-components/src/components/common/PageNavigation.tsx
  • libs/ui-components/src/components/common/PermissionsContext.tsx
  • libs/ui-components/src/components/common/WithTooltip.tsx
  • libs/ui-components/src/components/form/ApplicationPortMappingField.tsx
  • libs/ui-components/src/components/form/CheckboxField.tsx
  • libs/ui-components/src/components/form/ExpandableFormSection.tsx
  • libs/ui-components/src/components/form/FieldHelperText.tsx
  • libs/ui-components/src/components/form/LabelsField.tsx
  • libs/ui-components/src/components/form/NameField.tsx
  • libs/ui-components/src/components/form/NumberField.tsx
  • libs/ui-components/src/components/form/RadioField.tsx
  • libs/ui-components/src/components/form/RepositorySelect.tsx
  • libs/ui-components/src/components/form/RichValidationTextField.tsx
  • libs/ui-components/src/components/form/SwitchField.tsx
  • libs/ui-components/src/components/form/TextAreaField.tsx
  • libs/ui-components/src/components/form/TextField.tsx
  • libs/ui-components/src/components/form/UploadField.tsx
  • libs/ui-components/src/components/form/validations.ts
  • libs/ui-components/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.tsx
  • libs/ui-components/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.tsx
  • libs/ui-components/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.tsx
  • libs/ui-components/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.tsx
  • libs/ui-components/src/components/modals/EditLabelsModal/EditLabelsForm.tsx
  • libs/ui-components/src/components/modals/ResumeDevicesModal/ResumeDevicesModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassDeleteImageBuildModal/MassDeleteImageBuildModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.tsx
  • libs/ui-components/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.tsx
  • libs/ui-components/src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.tsx
  • libs/ui-components/src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.tsx
  • libs/ui-components/src/hooks/useAppContext.tsx
  • libs/ui-components/src/hooks/useCliArtifacts.ts
  • libs/ui-components/src/hooks/useDeviceLabelMatch.ts
  • libs/ui-components/src/hooks/useDeviceLogs.ts
  • libs/ui-components/src/hooks/useFetchPeriodically.ts
  • libs/ui-components/src/hooks/useNavigate.tsx
  • libs/ui-components/src/hooks/usePendingEnrollmentRequestsCount.ts
  • libs/ui-components/src/hooks/useSystemRestoreContext.tsx
  • libs/ui-components/src/hooks/useTablePagination.ts
  • libs/ui-components/src/hooks/useTableSelect.ts
  • libs/ui-components/src/hooks/useTemplateVersion.ts
  • libs/ui-components/src/hooks/useVulnerabilities.ts
  • libs/ui-components/src/types/deviceSpec.ts
  • libs/ui-components/src/types/extraTypes.ts
  • libs/ui-components/src/utils/api.ts
  • libs/ui-components/src/utils/apps.ts
  • libs/ui-components/src/utils/authProvider.ts
  • libs/ui-components/src/utils/catalog.ts
  • libs/ui-components/src/utils/cliArtifacts.ts
  • libs/ui-components/src/utils/dates.ts
  • libs/ui-components/src/utils/deviceLogCommandBuilder.ts
  • libs/ui-components/src/utils/deviceLogCommandHandler.ts
  • libs/ui-components/src/utils/deviceLogDownload.ts
  • libs/ui-components/src/utils/deviceLogs.ts
  • libs/ui-components/src/utils/devices.ts
  • libs/ui-components/src/utils/imageBuilds.ts
  • libs/ui-components/src/utils/labels.ts
  • libs/ui-components/src/utils/patch.ts
  • libs/ui-components/src/utils/query.ts
  • libs/ui-components/src/utils/resource.ts
  • libs/ui-components/src/utils/status/applications.ts
  • libs/ui-components/src/utils/status/common.ts
  • libs/ui-components/src/utils/status/devices.ts
  • libs/ui-components/src/utils/status/enrollmentRequest.ts
  • libs/ui-components/src/utils/status/fleet.ts
  • libs/ui-components/src/utils/status/imagePromotion.ts
  • libs/ui-components/src/utils/status/integrity.ts
  • libs/ui-components/src/utils/status/repository.ts
  • libs/ui-components/src/utils/status/system.ts
  • libs/ui-components/src/utils/status/systemd.ts
  • libs/ui-components/src/utils/status/vulnerabilities.ts
  • libs/ui-components/src/utils/time.ts
  • libs/ui-components/src/utils/vulnerabilities.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

commit="31f27b337d5b4b6b38a48f2c18bb2dd84224ccf1"

git show --no-ext-diff --format=fuller --no-renames --stat "$commit"
printf '\n--- NAME STATUS ---\n'
git diff-tree --no-commit-id --name-status -r "$commit"
printf '\n--- PATCH ---\n'
git diff --no-ext-diff --no-renames "${commit}^" "$commit"

Length of output: 131294


🏁 Script executed:

#!/bin/bash
set -euo pipefail

commit="31f27b337d5b4b6b38a48f2c18bb2dd84224ccf1"
parent="${commit}^"

python3 - "$commit" "$parent" <<'PY'
import subprocess
import sys
import re

commit, parent = sys.argv[1:]
files = subprocess.check_output(
    ["git", "diff", "--name-only", "--diff-filter=ACMRT", parent, commit],
    text=True,
).splitlines()

def import_line_numbers(text):
    """Return 1-based line numbers belonging to static import declarations."""
    lines = text.splitlines()
    covered = set()
    in_import = False
    for n, line in enumerate(lines, 1):
        stripped = line.lstrip()
        if not in_import and re.match(r"import(?:\s+type)?\b", stripped):
            in_import = True
        if in_import:
            covered.add(n)
            if ";" in line:
                in_import = False
    return covered

non_import = []
for path in files:
    if not path.endswith((".ts", ".tsx", ".mts", ".cts")):
        non_import.append((path, "non-TypeScript file changed"))
        continue
    old = subprocess.check_output(["git", "show", f"{parent}:{path}"], text=True)
    new = subprocess.check_output(["git", "show", f"{commit}:{path}"], text=True)
    old_imports = import_line_numbers(old)
    new_imports = import_line_numbers(new)
    diff = subprocess.check_output(
        ["git", "diff", "--unified=0", "--no-ext-diff", parent, commit, "--", path],
        text=True,
    )
    old_line = new_line = None
    for line in diff.splitlines():
        m = re.match(r"^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@", line)
        if m:
            old_line, new_line = map(int, m.groups())
            continue
        if old_line is None or line.startswith(("---", "+++")):
            continue
        if line.startswith("-"):
            if line[1:].strip() and old_line not in old_imports:
                non_import.append((path, f"removed Line {old_line}: {line[1:]}"))
            old_line += 1
        elif line.startswith("+"):
            if line[1:].strip() and new_line not in new_imports:
                non_import.append((path, f"added Line {new_line}: {line[1:]}"))
            new_line += 1
        else:
            old_line += 1
            new_line += 1

print(f"Changed files: {len(files)}")
if non_import:
    print("NON-IMPORT CHANGES:")
    for path, detail in non_import:
        print(f"{path}: {detail}")
else:
    print("No changed non-empty lines outside static import declarations were found.")

print("\nCommit subject:")
subprocess.run(["git", "show", "-s", "--format=%s", commit], check=True)
PY

Length of output: 2893


🏁 Script executed:

#!/bin/bash
set -euo pipefail

commit="31f27b337d5b4b6b38a48f2c18bb2dd84224ccf1"

git diff --no-ext-diff --no-renames "${commit}^" "$commit" -- \
  eslint.config.js \
  libs/i18n/locales/en/translation.json

Length of output: 1713


@celdrake Yes. There is one unrelated change:

  • libs/i18n/locales/en/translation.json adds Invalid channel {{ channel }} for version {{ version }}. This does not relate to import type.

The eslint.config.js change is related. It enables @typescript-eslint/consistent-type-imports with inline type imports.

All TypeScript changes in the commit are limited to import declarations.

You are interacting with an AI system.

Made-with: Cursor
@celdrake
celdrake marked this pull request as ready for review August 5, 2026 13:19
@celdrake

celdrake commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Please check again. There shouldn't be any change that isn't strictly necessary and related to the introduction of the new consistent-type-imports eslint rule.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

commit='31f27b337d5b4b6b38a48f2c18bb2dd84224ccf1'
parent="${commit}^"

printf '%s\n' '--- COMMIT ---'
git show -s --format='fuller%n%n%B' "$commit"

printf '%s\n' '--- CHANGED FILES ---'
git diff-tree --no-commit-id --name-status -r --no-renames "$commit"

printf '%s\n' '--- NON-IMPORT AND CONFIGURATION DIFF ---'
git diff --no-ext-diff --no-renames --unified=3 "$parent" "$commit" -- \
  ':(exclude)**/*.ts' ':(exclude)**/*.tsx'

printf '%s\n' '--- TYPE IMPORT TRANSFORMATIONS AND USAGE CHECK ---'
python3 - "$parent" "$commit" <<'PY'
import re
import subprocess
import sys

parent, commit = sys.argv[1:]

files = subprocess.check_output(
    ["git", "diff", "--name-only", "--no-renames", parent, commit, "--", "*.ts", "*.tsx"],
    text=True,
).splitlines()

def content(rev, path):
    return subprocess.check_output(["git", "show", f"{rev}:{path}"], text=True)

def imports(source):
    # Static imports, including multiline declarations.
    return re.findall(r'(?ms)^import\s+(?:type\s+)?(?:[\s\S]*?)\s+from\s+[\'"][^\'"]+[\'"]\s*;?', source)

for path in files:
    old = content(parent, path)
    new = content(commit, path)
    old_imps = imports(old)
    new_imps = imports(new)
    if old_imps == new_imps:
        continue
    print(f"\nFILE: {path}")
    print("Changed imports:")
    for imp in new_imps:
        if imp not in old_imps:
            print("  +", " ".join(imp.split()))
    for imp in old_imps:
        if imp not in new_imps:
            print("  -", " ".join(imp.split()))

    # Show all non-import modified lines. Empty lines are omitted.
    diff = subprocess.check_output(
        ["git", "diff", "--no-ext-diff", "--unified=0", parent, commit, "--", path],
        text=True,
    )
    in_old = in_new = False
    for line in diff.splitlines():
        if line.startswith("@@"):
            in_old = in_new = False
        elif line.startswith("-") and not line.startswith("---"):
            text = line[1:].strip()
            in_old = text.startswith("import ") or in_old
            if text and not in_old:
                print("  NON-IMPORT REMOVAL:", text)
            if ";" in text:
                in_old = False
        elif line.startswith("+") and not line.startswith("+++"):
            text = line[1:].strip()
            in_new = text.startswith("import ") or in_new
            if text and not in_new:
                print("  NON-IMPORT ADDITION:", text)
            if ";" in text:
                in_new = False
PY

printf '%s\n' '--- ESLINT RULE CONTEXT ---'
git diff --no-ext-diff --no-renames --unified=12 "$parent" "$commit" -- eslint.config.js

Length of output: 183246


@celdrake I checked the commit again.

One unrelated change remains:

  • libs/i18n/locales/en/translation.json adds "Invalid channel {{ channel }} for version {{ version }}".

This JSON file is also excluded by globalIgnores(['**/*.json']). The consistent-type-imports rule cannot require this change.

All other changes are either:

  • The new @typescript-eslint/consistent-type-imports configuration in eslint.config.js, or
  • TypeScript import changes that add type to type-only imports.

The translation-key addition should be removed from this commit.

You are interacting with an AI system.

@celdrake

celdrake commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai new commit has is changed to 950a05a95d8e785fcb5b99548cbb2392f945534a, you checked the old commit before the rebase.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

commit='950a05a95d8e785fcb5b99548cbb2392f945534a'
parent="${commit}^"

echo '--- COMMIT ---'
git show -s --format='fuller%n%n%B' "$commit"

echo '--- CHANGED FILES ---'
git diff-tree --no-commit-id --name-status -r --no-renames "$commit"

echo '--- COMPLETE DIFF STAT ---'
git diff --stat --no-renames "$parent" "$commit"

echo '--- NON-TYPESCRIPT DIFF ---'
git diff --no-ext-diff --no-renames --unified=3 "$parent" "$commit" -- \
  ':(exclude)**/*.ts' ':(exclude)**/*.tsx' || true

echo '--- TYPESCRIPT NON-IMPORT LINES ---'
python3 - "$parent" "$commit" <<'PY'
import re
import subprocess
import sys

parent, commit = sys.argv[1:]
paths = subprocess.check_output(
    ["git", "diff", "--name-only", "--no-renames", parent, commit, "--", "*.ts", "*.tsx"],
    text=True,
).splitlines()

def import_lines(source):
    covered = set()
    active = False
    for n, line in enumerate(source.splitlines(), 1):
        if not active and re.match(r"^\s*import(?:\s+type)?\b", line):
            active = True
        if active:
            covered.add(n)
            if ";" in line:
                active = False
    return covered

found = False
for path in paths:
    old = subprocess.check_output(["git", "show", f"{parent}:{path}"], text=True)
    new = subprocess.check_output(["git", "show", f"{commit}:{path}"], text=True)
    old_imports, new_imports = import_lines(old), import_lines(new)
    diff = subprocess.check_output(
        ["git", "diff", "--no-ext-diff", "--unified=0", parent, commit, "--", path],
        text=True,
    ).splitlines()
    old_line = new_line = None
    for line in diff:
        match = re.match(r"^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@", line)
        if match:
            old_line, new_line = map(int, match.groups())
        elif old_line is not None and line.startswith("-") and not line.startswith("---"):
            if line[1:].strip() and old_line not in old_imports:
                print(f"{path}: removed Line {old_line}: {line[1:]}")
                found = True
            old_line += 1
        elif new_line is not None and line.startswith("+") and not line.startswith("+++"):
            if line[1:].strip() and new_line not in new_imports:
                print(f"{path}: added Line {new_line}: {line[1:]}")
                found = True
            new_line += 1
        elif old_line is not None and not line.startswith(("diff ", "index ")):
            old_line += 1
            new_line += 1
if not found:
    print("No non-empty TypeScript changes outside static import declarations.")
PY

echo '--- IMPORT CHANGES ---'
git diff --no-ext-diff --no-renames --unified=1 "$parent" "$commit" -- '*.ts' '*.tsx'

Length of output: 145549


🏁 Script executed:

#!/bin/bash
set -euo pipefail

commit='950a05a95d8e785fcb5b99548cbb2392f945534a'
parent="${commit}^"

echo '--- SUBJECT ---'
git show -s --format='%h %s' "$commit"

echo '--- CHANGED FILE COUNTS BY EXTENSION ---'
git diff --name-only --no-renames "$parent" "$commit" |
  awk '
    /\.tsx?$/ { ts++ ; next }
    { other++; print "NON_TS_FILE: " $0 }
    END { print "TYPESCRIPT_FILES: " (ts+0); print "NON_TYPESCRIPT_FILES: " (other+0) }
  '

echo '--- NON-TYPESCRIPT PATCH ---'
git diff --no-ext-diff --no-renames --unified=0 "$parent" "$commit" -- \
  ':(exclude)**/*.ts' ':(exclude)**/*.tsx' || true

echo '--- TYPESCRIPT LINES OUTSIDE IMPORT DECLARATIONS ---'
python3 - "$parent" "$commit" <<'PY'
import re
import subprocess
import sys

parent, commit = sys.argv[1:]
paths = subprocess.check_output(
    ["git", "diff", "--name-only", "--no-renames", parent, commit, "--", "*.ts", "*.tsx"],
    text=True,
).splitlines()

def import_line_set(source):
    lines, result, active = source.splitlines(), set(), False
    for number, line in enumerate(lines, 1):
        if not active and re.match(r"^\s*import(?:\s+type)?(?:\s|\{|\*)", line):
            active = True
        if active:
            result.add(number)
            if ";" in line:
                active = False
    return result

changes = []
for path in paths:
    old = subprocess.check_output(["git", "show", f"{parent}:{path}"], text=True)
    new = subprocess.check_output(["git", "show", f"{commit}:{path}"], text=True)
    old_imports, new_imports = import_line_set(old), import_line_set(new)
    diff = subprocess.check_output(
        ["git", "diff", "--no-ext-diff", "--unified=0", parent, commit, "--", path],
        text=True,
    ).splitlines()
    old_line = new_line = None
    for line in diff:
        match = re.match(r"^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@", line)
        if match:
            old_line, new_line = map(int, match.groups())
            continue
        if old_line is None or line.startswith(("---", "+++", "diff ", "index ")):
            continue
        if line.startswith("-"):
            if line[1:].strip() and old_line not in old_imports:
                changes.append(f"{path}: removed Line {old_line}: {line[1:]}")
            old_line += 1
        elif line.startswith("+"):
            if line[1:].strip() and new_line not in new_imports:
                changes.append(f"{path}: added Line {new_line}: {line[1:]}")
            new_line += 1
        elif line.startswith(" "):
            old_line += 1
            new_line += 1

if changes:
    print("\n".join(changes))
else:
    print("NONE")
PY

echo '--- ESLINT CONFIGURATION PATCH ---'
git diff --no-ext-diff --no-renames --unified=3 "$parent" "$commit" -- eslint.config.js || true

Length of output: 4122


@celdrake I verified the correct commit: 950a05a95d8e785fcb5b99548cbb2392f945534a.

It contains only the required changes:

  • eslint.config.js enables @typescript-eslint/consistent-type-imports.
  • 329 TypeScript files change only static import declarations.
  • No non-import TypeScript lines changed.
  • No translation or other unrelated files changed.

My earlier finding applied only to the pre-rebase commit. It does not apply to this commit.

You are interacting with an AI system.

@celdrake
celdrake merged commit 2c8ab18 into flightctl:main Aug 5, 2026
10 checks passed
@celdrake
celdrake deleted the use-type-imports branch August 5, 2026 13:57
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.

2 participants