{{ __('updates::messages.page.installed_version') }}
{{ $update->currentVersion }}
{{ __('updates::messages.page.latest_version') }}
{{ $update->latestVersion ?? '—' }}
{{ __('updates::messages.page.state') }}
in_array($stage->value, ['idle', 'complete'], true), 'px-pill--red' => $stage->value === 'failed', 'px-pill--amber' => $stage->isRunning() || $stage->value === 'rolled_back', ])>{{ $stage->label() }}
{{ __('updates::messages.page.installed_version') }} →
{{ $inProgressFrom ?? '?' }} → {{ $inProgressTo ?? '?' }}
{{ __('updates::messages.page.last_error') }}
{{ $lastError }}
{{ __('updates::messages.page.channel') }}
{{ $channel }}
{{ __('updates::messages.page.last_checked') }}
{{ $lastCheckedAt?->diffForHumans() ?? __('updates::messages.page.never_checked') }}
@if ($canInstall)
@csrf
@if ($canRollBack)
@csrf
@endif
@endif
@if ($update->belowMinSupported) @elseif ($update->isInstallable()) @if ($update->securityUpdate) @elseif ($update->forceUpdate) @endif @if ($update->releaseNotes)

{{ __('updates::messages.page.release_notes') }}

{{-- Escaped, not rendered as markup: release notes arrive over the network, and an update server that could inject HTML into an admin's browser would have a clean path to the whole system. --}}

{{ $update->releaseNotes }}

@endif @if ($canInstall) @if ($duringBusinessHours) @endif
@csrf
@endif
@else

{{ __('updates::messages.notices.up_to_date') }}

{{ __('updates::messages.notices.up_to_date_text') }}

@endif