diff --git a/src/shared/versions.ts b/src/shared/versions.ts index 219997e..b7e7d61 100644 --- a/src/shared/versions.ts +++ b/src/shared/versions.ts @@ -1,6 +1,6 @@ export const HARBOR_VERSIONS = Object.freeze({ - macClient: '0.30.0', - gatewayClient: '0.31.0', + macClient: '0.30.1', + gatewayClient: '0.31.1', gatewayBackend: '0.31.0', }); diff --git a/src/web/features/failover/FailoverFeature.tsx b/src/web/features/failover/FailoverFeature.tsx index 22c0fa1..9d01a73 100644 --- a/src/web/features/failover/FailoverFeature.tsx +++ b/src/web/features/failover/FailoverFeature.tsx @@ -76,27 +76,26 @@ function pulseNumber(event: FormEvent) { ], { duration: 320, easing: 'cubic-bezier(0.16, 1, 0.3, 1)' }); } -function FailoverNumberSetting({ before, after, value, min, max, step = 10, disabled, ariaLabel, onChange, compact = false }: { +function FailoverNumberSetting({ before, after, value, min, max, disabled, ariaLabel, onChange }: { before: string; after: string; value: number; min: number; max: number; - step?: number; disabled?: boolean; ariaLabel: string; onChange: (value: number) => void; - compact?: boolean; }) { - const set = (next: number) => onChange(Math.min(max, Math.max(min, next))); - return
+ return
; + ; } const reasonLabel = (reason: string | null) => ({ @@ -315,8 +310,6 @@ export function FailoverPanel({ const [serviceError, setServiceError] = useState(''); const [openPicker, setOpenPicker] = useState(''); const [removingCheckId, setRemovingCheckId] = useState(''); - const [advancedOpen, setAdvancedOpen] = useState(false); - const [advancedClosing, setAdvancedClosing] = useState(false); const [manualChecking, setManualChecking] = useState(false); useEffect(() => { if (!dirty) setDraft(snapshot.policy); @@ -422,15 +415,6 @@ export function FailoverPanel({ if (!document.startViewTransition || matchMedia('(prefers-reduced-motion: reduce)').matches) finish(); else document.startViewTransition(finish); }; - const toggleAdvanced = () => { - if (!advancedOpen) { - setAdvancedOpen(true); - return; - } - if (matchMedia('(prefers-reduced-motion: reduce)').matches) setAdvancedOpen(false); - else setAdvancedClosing(true); - }; - return
- Что проверять + Проверка доступностиHarbor открывает эти адреса через оба канала и сравнивает результат. {draft.checks.map((check) => { const service = services.find(({ id }) => check.serviceId === id); const removing = removingCheckId === check.serviceId; @@ -525,12 +509,10 @@ export function FailoverPanel({ > {service?.label || 'Сервис недоступен'}
+
+

Когда переключать канал

+

Harbor сначала подтверждает сбой и только затем переводит новые соединения на рабочий канал.

+
update({ intervalMs: value * 1_000 })} /> update({ failureWindowMs: value * 1_000 })} /> update({ recoveryWindowMs: value * 1_000 })} /> @@ -594,26 +580,17 @@ export function FailoverPanel({ update({ trafficGuard: { ...draft.trafficGuard, thresholdBytesPerSecond: value * 1024 } })} />
-
-