fix: remove database restart limits and clear stale Traefik state

Drop restart-limit fields and enforcement from database resources, clear cached Traefik version data when proxies change, and show missing service environment variables from disabled deploy actions.
This commit is contained in:
Andras Bacsai
2026-09-04 15:42:26 +02:00
parent 8dc35e2b5f
commit 053b030c42
27 changed files with 326 additions and 97 deletions
@@ -1,6 +1,6 @@
@props(['application'])
@if ($application->stoppedAfterRestartLimit())
@if (method_exists($application, 'stoppedAfterRestartLimit') && $application->stoppedAfterRestartLimit())
@php($restartLimit = method_exists($application, 'restartLimitMaximum') ? $application->restartLimitMaximum() : ($application->max_restart_count ?? 0))
@php($displayRestartCount = max($application->restart_count ?? 0, $restartLimit))
<x-status-badge
@@ -189,15 +189,28 @@
@endcan
@else
@can('deploy', $service)
<button type="button" class="button mb-2 w-full justify-between" disabled>
<span>Deploy</span>
<span class="text-xs font-normal opacity-70">Fill required variables first</span>
</button>
<div id="service-mobile-actions" class="relative mb-3"
x-data="{ open: false }" @click.outside="open = false"
@keydown.escape.window="open = false">
<button type="button" class="button w-full justify-between" @click="open = !open"
:aria-expanded="open" aria-haspopup="menu">
<span>Actions</span>
<span class="inline-flex transition-transform" :class="open && 'rotate-180'">
<x-reicon name="chevron-down" class="size-3 opacity-55" />
</span>
</button>
<div x-cloak x-show="open" x-transition.origin.top.left
class="listbox-panel top-full! left-0! right-0! mt-1! w-full! min-w-0!" role="menu">
<div class="listbox-option cursor-default! justify-start! gap-2.5! text-neutral-400! dark:text-fg-faint!"
role="menuitem" aria-disabled="true">
<x-reicon name="play-circle" class="size-3.5 opacity-70" />
<span>Deploy (<a href="{{ $environmentVariablesUrl }}" {{ wireNavigate() }}
class="cursor-pointer underline underline-offset-2">missing required env vars</a>)</span>
</div>
</div>
</div>
@endcan
<a href="{{ $environmentVariablesUrl }}" {{ wireNavigate() }}
class="mb-3 inline-flex" aria-label="Open required environment variables">
<x-status-badge status="Required variables missing" type="error" />
</a>
@endif
</div>
@@ -287,10 +300,26 @@
</div>
@endcan
@else
<a href="{{ $environmentVariablesUrl }}" {{ wireNavigate() }}
aria-label="Open required environment variables">
<x-status-badge status="Required variables missing" type="error" />
</a>
@can('deploy', $service)
<div id="service-desktop-actions" class="relative" x-data="{ open: false }"
x-effect="$dispatch('resource-actions-toggled', { open })"
@click.outside="open = false" @keydown.escape.window="open = false">
<button type="button" class="button button-highlighted" @click="open = !open"
:aria-expanded="open" aria-haspopup="menu">
Actions
<x-reicon name="chevron-down" class="size-3 opacity-55" />
</button>
<div x-cloak x-show="open" x-transition.origin.top.right
class="listbox-panel top-full! right-0! left-auto! mt-1! w-64! min-w-0!" role="menu">
<div class="listbox-option cursor-default! justify-start! gap-2.5! text-neutral-400! dark:text-fg-faint!"
role="menuitem" aria-disabled="true">
<x-reicon name="play-circle" class="size-3.5 opacity-70" />
<span>Deploy (<a href="{{ $environmentVariablesUrl }}" {{ wireNavigate() }}
class="cursor-pointer underline underline-offset-2">missing required env vars</a>)</span>
</div>
</div>
</div>
@endcan
@endif
</div>
</div>