diff --git a/frontend-modern/src/components/Settings/AIModelSelectionSection.tsx b/frontend-modern/src/components/Settings/AIModelSelectionSection.tsx index 3998a85e4..7ce7e46e1 100644 --- a/frontend-modern/src/components/Settings/AIModelSelectionSection.tsx +++ b/frontend-modern/src/components/Settings/AIModelSelectionSection.tsx @@ -126,7 +126,8 @@ export const PatrolPreflightControl: Component<{ state: AISettingsState }> = (co }; const formatDuration = (ms: number) => { - if (ms < 1000) return `${ms}ms`; + if (!Number.isFinite(ms) || ms < 0) return '-'; + if (ms < 1000) return `${Math.round(ms)}ms`; return `${(ms / 1000).toFixed(1)}s`; }; diff --git a/frontend-modern/src/features/alerts/useAlertScheduleState.ts b/frontend-modern/src/features/alerts/useAlertScheduleState.ts index be1be54a3..28297c3fa 100644 --- a/frontend-modern/src/features/alerts/useAlertScheduleState.ts +++ b/frontend-modern/src/features/alerts/useAlertScheduleState.ts @@ -254,9 +254,10 @@ export function useAlertScheduleState(props: UseAlertScheduleStateProps) { }; const setGroupingWindow = (rawValue: string) => { + const parsed = Number.parseInt(rawValue, 10); props.setGrouping({ ...props.grouping(), - window: Number.parseInt(rawValue, 10), + window: Number.isNaN(parsed) ? props.grouping().window : parsed, }); markUnsaved(); };