{{-- Die Liste holt sich ihren Stand selbst. Sie tat es nicht, und das fiel an zwei Stellen auf: Zustand, VPN und Belegung standen so lange still, bis jemand neu lud — und ein entfernter Host blieb sichtbar, obwohl er schon weg war. Beides sah aus, als sei nichts passiert. Schneller, solange etwas in Arbeit ist: `ConfirmRemoveHost` setzt den Host auf `disabled` und wirft `PurgeHost` in die Warteschlange, die erst auf die Runner-Sperre wartet. In dieser Zeit steht die Zeile noch da, und ohne kurzes Nachfassen bliebe sie es gefühlt für immer. Läuft nichts, reicht die Minute — die Seite soll nicht dauernd Abfragen erzeugen, nur weil sie offen ist. --}}
{{ __('hosts.subtitle') }}
{{ $total === 0 ? __('hosts.empty') : __('hosts.no_matches') }}
| {{ __('hosts.col.host') }} | {{ __('hosts.col.datacenter') }} | {{ __('hosts.col.health') }} | {{ __('hosts.col.vpn') }} | {{ __('hosts.col.instances') }} | {{ __('hosts.col.capacity') }} | {{ __('hosts.col.status') }} | {{-- Leer mit Absicht: die Spalte trägt nur den Terminal-Knopf, und der ist nicht auf jeder Zeile da (Berechtigung, Betriebsbereitschaft). Eine Beschriftung, die unabhängig davon immer dastünde, wäre eine falsche Zusage. --}}|
|---|---|---|---|---|---|---|---|
|
|
{{ $host->datacenter }} | {{ __('hosts.health.'.$health) }} |
|
{{ $host->instances_count }} |
@if ($host->total_gb)
|
{{-- Ohne Tunneladresse oder Fingerabdruck kann keine Sitzung
entstehen — TerminalTicket::issue() weist das mit einer
RuntimeException zurück (Aufgabe 1). Ein Knopf, der das
verlässlich auslöst, ist schlechter als gar keiner. --}}
@can('hosts.manage')
@if ($host->wg_ip && $host->ssh_host_key)
|