@php // CHANGELOG.md uses German Keep-a-Changelog headings as the canonical section keys; // map each to a localized display label + a badge tone. $sectionKey = [ 'Hinzugefügt' => 'added', 'Geändert' => 'changed', 'Behoben' => 'fixed', 'Sicherheit' => 'security', 'Entfernt' => 'removed', 'Veraltet' => 'deprecated', ]; $sectionTone = [ 'added' => 'accent', 'changed' => 'cyan', 'fixed' => 'neutral', 'security' => 'accent', 'removed' => 'neutral', 'deprecated' => 'neutral', ]; $sectionLabel = fn (string $g): string => isset($sectionKey[$g]) ? __('versions.section_'.$sectionKey[$g]) : $g; $tone = fn (string $g): string => $sectionTone[$sectionKey[$g] ?? ''] ?? 'neutral'; $repoHost = parse_url($repository, PHP_URL_HOST); $repoPath = trim((string) parse_url($repository, PHP_URL_PATH), '/'); $isUpdate = $updateState === 'update'; @endphp
{{-- Header --}}

{{ __('versions.eyebrow') }}

{{ __('versions.heading') }}

{{ __('versions.check_updates') }}
{{-- Honest status banner — installed version vs. newest release tag in the channel --}}
$isUpdate, 'border-line' => ! $isUpdate, ])> $isUpdate, 'border-accent/25 bg-accent/10 text-accent-text' => ! $isUpdate, ])>

Clusev v{{ $version }} {{ __('versions.channel_badge', ['channel' => $channel]) }} @if ($latestTag) {{ __('versions.latest_release_badge', ['tag' => $latestTag]) }} @endif

@if ($updateStatus) {{ $updateStatus }} @else {{ __('versions.banner_default') }} @endif

@if ($lastChecked) {{ __('versions.checked_at', ['time' => $lastChecked]) }} @endif
{{-- Release history BY VERSION --}}
@forelse ($releases as $rel)
$loop->first, 'bg-ink-4' => ! $loop->first])> @unless ($loop->last)@endunless
{{-- Version + date header --}}
@if ($rel['unreleased']) {{ __('versions.unreleased') }} {{ __('versions.in_progress') }} @else v{{ $rel['version'] }} @if ($rel['date']) {{ $rel['date'] }} @endif @endif
{{-- Grouped changes --}}
@foreach ($rel['groups'] as $group => $items)
{{ $sectionLabel($group) }}
    @foreach ($items as $text)
  • {{ $text }}
  • @endforeach
@endforeach
@empty

{{ __('versions.changelog_empty') }}

@endforelse
{{-- Aside --}}
v{{ $version }} {{ __('versions.running') }}
{{ __('versions.build') }}
{{ $build['sha'] ?? '—' }}
{{ __('versions.branch') }}
{{ $build['branch'] }}
{{ __('versions.channel') }}
{{ $channel }}
{{ __('versions.latest_release') }}
{{ $latestTag ? 'v'.$latestTag : '—' }}
{{ __('versions.license') }}
{{ $license }}

{{ __('versions.update_hint') }}

docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
artisan migrate --force
{{ $repoPath }} {{ $repoHost }}

{{ __('versions.open_core', ['license' => $license]) }}