diff --git a/src/shared/versions.ts b/src/shared/versions.ts index 60f6293..0e320ed 100644 --- a/src/shared/versions.ts +++ b/src/shared/versions.ts @@ -1,6 +1,6 @@ export const HARBOR_VERSIONS = Object.freeze({ - macClient: '0.24.0', - gatewayClient: '0.25.0', + macClient: '0.24.1', + gatewayClient: '0.25.1', gatewayBackend: '0.25.0', }); diff --git a/src/web/features/devices/DevicesPanel.tsx b/src/web/features/devices/DevicesPanel.tsx index ae4e3c0..fb3ac1a 100644 --- a/src/web/features/devices/DevicesPanel.tsx +++ b/src/web/features/devices/DevicesPanel.tsx @@ -387,6 +387,7 @@ export function DevicesPanel({ feature }: { feature: DevicesFeature }) { const groupStart = group !== previousGroup; const hasName = Boolean(device.alias || device.hostname); const title = device.alias || device.hostname || device.ip || 'Неизвестное устройство'; + const identityTooltipId = `device-identity-${device.id}`; const editing = editingId === device.id; const saving = savingId === device.id; const seen = formatLastSeen(device.lastSeenAt); @@ -452,7 +453,7 @@ export function DevicesPanel({ feature }: { feature: DevicesFeature }) { }
-

+

{editing ? ( setAlias(event.target.value)} @@ -470,9 +472,10 @@ export function DevicesPanel({ feature }: { feature: DevicesFeature }) { }} /> ) : hasName && } {(hasName || (editing && Boolean(alias))) && device.ip && } @@ -480,8 +483,10 @@ export function DevicesPanel({ feature }: { feature: DevicesFeature }) { className={`client-device-ip${copied ? feedback.failed ? ' is-copy-error' : ' is-copied' : ''}`} type="button" aria-label={`Скопировать IP ${device.ip} устройства ${title}`} + aria-describedby={identityTooltipId} onClick={() => copyDeviceIp(device)} >{device.ip} : !hasName && !editing && Неизвестное устройство} + Hostname: {device.hostname || '—'} · MAC: {device.mac}

{!hasName && !editing &&