diff --git a/lang/de/release.php b/lang/de/release.php index c6993e4..5bad3e2 100644 --- a/lang/de/release.php +++ b/lang/de/release.php @@ -3,21 +3,45 @@ return [ 'title' => 'Release', 'nav' => 'Release', + 'eyebrow' => 'Release-Pipeline', 'heading' => 'Release-Steuerung', 'subtitle' => 'Beta auf Staging schneiden — nur auf der Dev-Instanz.', + 'dev_instance' => 'Dev-Instanz', + 'current' => 'Aktuelle Version', - 'continue_beta' => 'Nächste Beta (:v)', - 'bump_patch' => 'Patch-Beta (:v)', - 'bump_minor' => 'Minor-Beta (:v)', - 'bump_major' => 'Major-Beta (:v)', + 'channel' => 'Kanal', + 'source' => 'Quelle', + + // option tiles + 'choose' => 'Beta schneiden', + 'kind_continue' => 'Nächste Beta', + 'kind_patch' => 'Patch', + 'kind_minor' => 'Minor', + 'kind_major' => 'Major', + 'tile_beta' => 'Beta-Tag', 'hint' => 'Schneidet einen Beta-Tag und pusht ihn nach Gitea → Mirror → CI → Staging.', - 'confirm_title' => 'Beta schneiden?', - 'confirm_body' => 'Beta :target wird geschnitten und nach Gitea → Mirror → CI → Staging gepusht. Das stößt einen Deploy auf der Staging-Instanz an.', - 'confirm_action' => 'Schneiden & pushen', - 'staged_label' => 'Zuletzt geschnitten:', + + // running / result + 'running_title' => 'Release läuft', 'running' => 'Beta :target wird geschnitten und gepusht …', + 'in_progress' => 'läuft', 'staged' => 'Beta :tag gepusht → Mirror → CI → Staging.', + 'staged_label' => 'Zuletzt gepusht:', 'failed' => 'Release fehlgeschlagen: :reason', + + // pipeline rail + 'pipeline' => 'Pipeline', + 'pipe_sub_gitea' => 'Quelle · Tag wird hier erzeugt', + 'pipe_sub_mirror' => 'Automatischer Push-Mirror', + 'pipe_sub_ci' => 'Tests laufen', + 'pipe_sub_staging' => 'Beta wird ausgerollt', + + // confirm modal (R5) + 'confirm_title' => 'Beta auf Staging schneiden?', + 'confirm_body' => 'Schneidet eine Beta von :target, taggt sie und pusht nach Gitea → Mirror → CI → Staging. Der Tag ist unwiderruflich.', + 'confirm_action' => 'Beta schneiden', + + // errors 'invalid_target' => 'Ungültige Ziel-Version.', 'throttled' => 'Zu viele Versuche — in :seconds s erneut.', 'write_failed' => 'Anfrage konnte nicht geschrieben werden (Signal-Ordner nicht beschreibbar).', diff --git a/lang/en/release.php b/lang/en/release.php index 161d3a5..487792d 100644 --- a/lang/en/release.php +++ b/lang/en/release.php @@ -3,21 +3,45 @@ return [ 'title' => 'Release', 'nav' => 'Release', + 'eyebrow' => 'Release pipeline', 'heading' => 'Release control', 'subtitle' => 'Cut a staging beta — dev instance only.', + 'dev_instance' => 'Dev instance', + 'current' => 'Current version', - 'continue_beta' => 'Next beta (:v)', - 'bump_patch' => 'Patch beta (:v)', - 'bump_minor' => 'Minor beta (:v)', - 'bump_major' => 'Major beta (:v)', + 'channel' => 'Channel', + 'source' => 'Source', + + // option tiles + 'choose' => 'Cut a beta', + 'kind_continue' => 'Next beta', + 'kind_patch' => 'Patch', + 'kind_minor' => 'Minor', + 'kind_major' => 'Major', + 'tile_beta' => 'Beta tag', 'hint' => 'Cuts a beta tag and pushes it to Gitea → mirror → CI → staging.', - 'confirm_title' => 'Cut beta?', - 'confirm_body' => 'Beta :target will be cut and pushed to Gitea → mirror → CI → staging. This triggers a deploy on the staging instance.', - 'confirm_action' => 'Cut & push', - 'staged_label' => 'Last cut:', + + // running / result + 'running_title' => 'Release running', 'running' => 'Cutting and pushing beta :target …', + 'in_progress' => 'running', 'staged' => 'Beta :tag pushed → mirror → CI → staging.', + 'staged_label' => 'Last pushed:', 'failed' => 'Release failed: :reason', + + // pipeline rail + 'pipeline' => 'Pipeline', + 'pipe_sub_gitea' => 'Source · tag is cut here', + 'pipe_sub_mirror' => 'Automatic push mirror', + 'pipe_sub_ci' => 'Tests run', + 'pipe_sub_staging' => 'Beta is deployed', + + // confirm modal (R5) + 'confirm_title' => 'Cut a staging beta?', + 'confirm_body' => 'Cuts a beta of :target, tags it and pushes to Gitea → mirror → CI → staging. The tag is irreversible.', + 'confirm_action' => 'Cut beta', + + // errors 'invalid_target' => 'Invalid target version.', 'throttled' => 'Too many attempts — retry in :seconds s.', 'write_failed' => 'Could not write the request (signal directory not writable).', diff --git a/resources/views/livewire/release/index.blade.php b/resources/views/livewire/release/index.blade.php index 914e58a..fe0a4a2 100644 --- a/resources/views/livewire/release/index.blade.php +++ b/resources/views/livewire/release/index.blade.php @@ -1,45 +1,150 @@ -
{{ __('release.subtitle') }}
+@php + $isBeta = str_contains($current, '-beta'); + + $tiles = []; + if (isset($targets['continueBeta'])) { + $tiles[] = ['target' => $targets['continueBeta'], 'label' => __('release.kind_continue'), 'icon' => 'rotate', 'primary' => true]; + } + $tiles[] = ['target' => $targets['patch'], 'label' => __('release.kind_patch'), 'icon' => 'tag', 'primary' => false]; + $tiles[] = ['target' => $targets['minor'], 'label' => __('release.kind_minor'), 'icon' => 'tag', 'primary' => false]; + $tiles[] = ['target' => $targets['major'], 'label' => __('release.kind_major'), 'icon' => 'git-branch', 'primary' => false]; + + $steps = [ + ['name' => 'Gitea', 'sub' => __('release.pipe_sub_gitea'), 'active' => $pendingId !== null], + ['name' => 'GitHub-privat', 'sub' => __('release.pipe_sub_mirror'), 'active' => false], + ['name' => 'CI', 'sub' => __('release.pipe_sub_ci'), 'active' => false], + ['name' => 'Staging', 'sub' => __('release.pipe_sub_staging'), 'active' => false], + ]; +@endphp + +{{ __('release.eyebrow') }}
+{{ __('release.subtitle') }}
+{{ __('release.current') }}
+{{ $current }}
+{{ __('release.running_title') }}
+{{ __('release.running', ['target' => $pendingTarget]) }}
+{{ __('release.choose') }}
+{{ __('release.hint') }}
+
-
-
{{ __('release.hint') }}
- @endif - + {{-- Right: pipeline rail --}} +{{ $s['name'] }}
+{{ $s['sub'] }}
+