Merge pull request #4182 from coollabsio/next

v4.0.0-beta.362
This commit is contained in:
Andras Bacsai
2024-11-08 12:08:27 +01:00
committed by GitHub
13 changed files with 34 additions and 40 deletions

View File

@@ -50,22 +50,22 @@ class Email extends Component
public ?int $smtpTimeout = null; public ?int $smtpTimeout = null;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $smtpNotificationsTest; public bool $smtpNotificationsTest = false;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $smtpNotificationsDeployments; public bool $smtpNotificationsDeployments = false;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $smtpNotificationsStatusChanges; public bool $smtpNotificationsStatusChanges = false;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $smtpNotificationsDatabaseBackups; public bool $smtpNotificationsDatabaseBackups = false;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $smtpNotificationsScheduledTasks; public bool $smtpNotificationsScheduledTasks = false;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $smtpNotificationsServerDiskUsage; public bool $smtpNotificationsServerDiskUsage = false;
#[Validate(['boolean'])] #[Validate(['boolean'])]
public bool $resendEnabled; public bool $resendEnabled;

View File

@@ -46,8 +46,8 @@ class BackupEdit extends Component
#[Validate(['required', 'boolean'])] #[Validate(['required', 'boolean'])]
public bool $saveS3 = false; public bool $saveS3 = false;
#[Validate(['required', 'integer'])] #[Validate(['nullable', 'integer'])]
public int $s3StorageId = 1; public ?int $s3StorageId = 1;
#[Validate(['nullable', 'string'])] #[Validate(['nullable', 'string'])]
public ?string $databasesToBackup = null; public ?string $databasesToBackup = null;

View File

@@ -5,6 +5,7 @@ namespace App\Livewire\Server;
use App\Actions\Server\StartSentinel; use App\Actions\Server\StartSentinel;
use App\Actions\Server\StopSentinel; use App\Actions\Server\StopSentinel;
use App\Models\Server; use App\Models\Server;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate; use Livewire\Attributes\Validate;
use Livewire\Component; use Livewire\Component;
@@ -16,7 +17,7 @@ class Show extends Component
public string $name; public string $name;
#[Validate(['nullable'])] #[Validate(['nullable'])]
public ?string $description; public ?string $description = null;
#[Validate(['required'])] #[Validate(['required'])]
public string $ip; public string $ip;
@@ -31,7 +32,7 @@ class Show extends Component
public ?string $validationLogs = null; public ?string $validationLogs = null;
#[Validate(['nullable', 'url'])] #[Validate(['nullable', 'url'])]
public ?string $wildcardDomain; public ?string $wildcardDomain = null;
#[Validate(['required'])] #[Validate(['required'])]
public bool $isReachable; public bool $isReachable;
@@ -55,7 +56,7 @@ class Show extends Component
public string $sentinelToken; public string $sentinelToken;
#[Validate(['nullable'])] #[Validate(['nullable'])]
public ?string $sentinelUpdatedAt; public ?string $sentinelUpdatedAt = null;
#[Validate(['required', 'integer', 'min:1'])] #[Validate(['required', 'integer', 'min:1'])]
public int $sentinelMetricsRefreshRateSeconds; public int $sentinelMetricsRefreshRateSeconds;
@@ -67,7 +68,7 @@ class Show extends Component
public int $sentinelPushIntervalSeconds; public int $sentinelPushIntervalSeconds;
#[Validate(['nullable', 'url'])] #[Validate(['nullable', 'url'])]
public ?string $sentinelCustomUrl; public ?string $sentinelCustomUrl = null;
#[Validate(['required'])] #[Validate(['required'])]
public bool $isSentinelEnabled; public bool $isSentinelEnabled;
@@ -78,6 +79,7 @@ class Show extends Component
#[Validate(['required'])] #[Validate(['required'])]
public string $serverTimezone; public string $serverTimezone;
#[Locked]
public array $timezones; public array $timezones;
public function getListeners() public function getListeners()

View File

@@ -113,7 +113,7 @@ services:
retries: 10 retries: 10
timeout: 2s timeout: 2s
soketi: soketi:
image: 'ghcr.io/coollabsio/coolify-realtime:1.0.3' image: 'ghcr.io/coollabsio/coolify-realtime:1.0.4'
ports: ports:
- "${SOKETI_PORT:-6001}:6001" - "${SOKETI_PORT:-6001}:6001"
- "6002:6002" - "6002:6002"

View File

@@ -103,7 +103,7 @@ services:
retries: 10 retries: 10
timeout: 2s timeout: 2s
soketi: soketi:
image: 'ghcr.io/coollabsio/coolify-realtime:1.0.0' image: 'ghcr.io/coollabsio/coolify-realtime:1.0.4'
pull_policy: always pull_policy: always
container_name: coolify-realtime container_name: coolify-realtime
restart: always restart: always

View File

@@ -1,10 +1,10 @@
{ {
"coolify": { "coolify": {
"v4": { "v4": {
"version": "4.0.0-beta.360" "version": "4.0.0-beta.362"
}, },
"nightly": { "nightly": {
"version": "4.0.0-beta.362" "version": "4.0.0-beta.363"
}, },
"helper": { "helper": {
"version": "1.0.3" "version": "1.0.3"

View File

@@ -148,7 +148,7 @@
<li> <li>
<a title="Destinations" <a title="Destinations"
class="{{ request()->is('destination*') ? 'menu-item-active menu-item' : 'menu-item' }}" class="{{ request()->is('destination*') ? 'menu-item-active menu-item' : 'menu-item' }}"
href="{{ route('destination.index') }}" wire:navigate> href="{{ route('destination.index') }}">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" <path fill="none" stroke="currentColor" stroke-linecap="round"

View File

@@ -3,15 +3,15 @@
<div class="subtitle">Get notified about your infrastructure.</div> <div class="subtitle">Get notified about your infrastructure.</div>
<div class="navbar-main"> <div class="navbar-main">
<nav class="flex items-center gap-6 min-h-10"> <nav class="flex items-center gap-6 min-h-10">
<a wire:navigate class="{{ request()->routeIs('notifications.email') ? 'dark:text-white' : '' }}" <a class="{{ request()->routeIs('notifications.email') ? 'dark:text-white' : '' }}"
href="{{ route('notifications.email') }}"> href="{{ route('notifications.email') }}">
<button>Email</button> <button>Email</button>
</a> </a>
<a wire:navigate class="{{ request()->routeIs('notifications.telegram') ? 'dark:text-white' : '' }}" <a class="{{ request()->routeIs('notifications.telegram') ? 'dark:text-white' : '' }}"
href="{{ route('notifications.telegram') }}"> href="{{ route('notifications.telegram') }}">
<button>Telegram</button> <button>Telegram</button>
</a> </a>
<a wire:navigate class="{{ request()->routeIs('notifications.discord') ? 'dark:text-white' : '' }}" <a class="{{ request()->routeIs('notifications.discord') ? 'dark:text-white' : '' }}"
href="{{ route('notifications.discord') }}"> href="{{ route('notifications.discord') }}">
<button>Discord</button> <button>Discord</button>
</a> </a>

View File

@@ -1,29 +1,29 @@
<div class="flex flex-col items-start gap-2 min-w-fit"> <div class="flex flex-col items-start gap-2 min-w-fit">
<a class="menu-item {{ $activeMenu === 'general' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'general' ? 'menu-item-active' : '' }}"
href="{{ route('server.show', ['server_uuid' => $server->uuid]) }}" wire:navigate>General</a> href="{{ route('server.show', ['server_uuid' => $server->uuid]) }}">General</a>
@if ($server->isFunctional()) @if ($server->isFunctional())
<a class="menu-item {{ $activeMenu === 'advanced' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'advanced' ? 'menu-item-active' : '' }}"
href="{{ route('server.advanced', ['server_uuid' => $server->uuid]) }}" wire:navigate>Advanced href="{{ route('server.advanced', ['server_uuid' => $server->uuid]) }}">Advanced
</a> </a>
@endif @endif
<a class="menu-item {{ $activeMenu === 'private-key' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'private-key' ? 'menu-item-active' : '' }}"
href="{{ route('server.private-key', ['server_uuid' => $server->uuid]) }}" wire:navigate>Private Key href="{{ route('server.private-key', ['server_uuid' => $server->uuid]) }}">Private Key
</a> </a>
@if ($server->isFunctional()) @if ($server->isFunctional())
<a class="menu-item {{ $activeMenu === 'cloudflare-tunnels' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'cloudflare-tunnels' ? 'menu-item-active' : '' }}"
href="{{ route('server.cloudflare-tunnels', ['server_uuid' => $server->uuid]) }}" wire:navigate>Cloudflare href="{{ route('server.cloudflare-tunnels', ['server_uuid' => $server->uuid]) }}">Cloudflare
Tunnels</a> Tunnels</a>
<a class="menu-item {{ $activeMenu === 'destinations' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'destinations' ? 'menu-item-active' : '' }}"
href="{{ route('server.destinations', ['server_uuid' => $server->uuid]) }}" wire:navigate>Destinations href="{{ route('server.destinations', ['server_uuid' => $server->uuid]) }}">Destinations
</a> </a>
<a class="menu-item {{ $activeMenu === 'log-drains' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'log-drains' ? 'menu-item-active' : '' }}"
href="{{ route('server.log-drains', ['server_uuid' => $server->uuid]) }}" wire:navigate>Log href="{{ route('server.log-drains', ['server_uuid' => $server->uuid]) }}">Log
Drains</a> Drains</a>
<a class="menu-item {{ $activeMenu === 'metrics' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'metrics' ? 'menu-item-active' : '' }}"
href="{{ route('server.charts', ['server_uuid' => $server->uuid]) }}">Metrics</a> href="{{ route('server.charts', ['server_uuid' => $server->uuid]) }}">Metrics</a>
@endif @endif
@if (!$server->isLocalhost()) @if (!$server->isLocalhost())
<a class="menu-item {{ $activeMenu === 'danger' ? 'menu-item-active' : '' }}" <a class="menu-item {{ $activeMenu === 'danger' ? 'menu-item-active' : '' }}"
href="{{ route('server.delete', ['server_uuid' => $server->uuid]) }}" wire:navigate>Danger</a> href="{{ route('server.delete', ['server_uuid' => $server->uuid]) }}">Danger</a>
@endif @endif
</div> </div>

View File

@@ -16,8 +16,7 @@
@forelse ($server->destinations() as $destination) @forelse ($server->destinations() as $destination)
@if ($destination->getMorphClass() === 'App\Models\StandaloneDocker') @if ($destination->getMorphClass() === 'App\Models\StandaloneDocker')
<a class="box group" <a class="box group"
href="{{ route('destination.show', ['destination_uuid' => data_get($destination, 'uuid')]) }}" href="{{ route('destination.show', ['destination_uuid' => data_get($destination, 'uuid')]) }}">
wire:navigate>
<div class="flex flex-col mx-6"> <div class="flex flex-col mx-6">
<div class="box-title">{{ $destination->name }}</div> <div class="box-title">{{ $destination->name }}</div>
<div class="box-description">Server: {{ $destination->server->name }}</div> <div class="box-description">Server: {{ $destination->server->name }}</div>
@@ -26,8 +25,7 @@
@endif @endif
@if ($destination->getMorphClass() === 'App\Models\SwarmDocker') @if ($destination->getMorphClass() === 'App\Models\SwarmDocker')
<a class="box group" <a class="box group"
href="{{ route('destination.show', ['destination_uuid' => data_get($destination, 'uuid')]) }}" href="{{ route('destination.show', ['destination_uuid' => data_get($destination, 'uuid')]) }}">
wire:navigate>
<div class="flex flex-col mx-6"> <div class="flex flex-col mx-6">
<div class="box-title">{{ $destination->name }}</div> <div class="box-title">{{ $destination->name }}</div>
<div class="box-description">server: {{ $destination->server->name }}</div> <div class="box-description">server: {{ $destination->server->name }}</div>

View File

@@ -98,12 +98,6 @@
<x-forms.input id="allowed_ips" label="Allowed IPs" <x-forms.input id="allowed_ips" label="Allowed IPs"
helper="Allowed IP lists for the API. A comma separated list of IPs. Empty means you allow from everywhere." helper="Allowed IP lists for the API. A comma separated list of IPs. Empty means you allow from everywhere."
placeholder="1.1.1.1,8.8.8.8" /> placeholder="1.1.1.1,8.8.8.8" />
<h4 class="pt-6">Advanced</h4>
<div class="text-right md:w-96">
<x-forms.checkbox instantSave id="is_registration_enabled" label="Registration Allowed" />
<x-forms.checkbox instantSave id="do_not_track" label="Do Not Track" />
</div>
<h4 class="pt-6">Update</h4> <h4 class="pt-6">Update</h4>
<div class="text-right md:w-96"> <div class="text-right md:w-96">
@if (!is_null(env('AUTOUPDATE', null))) @if (!is_null(env('AUTOUPDATE', null)))

View File

@@ -7,7 +7,7 @@
</div> </div>
<div class="flex flex-wrap gap-2 "> <div class="flex flex-wrap gap-2 ">
@forelse ($tags as $oneTag) @forelse ($tags as $oneTag)
<a wire:navigate :class="{{ $tag?->id == $oneTag->id }} && 'dark:bg-coollabs hover:bg-coollabs-100'" <a :class="{{ $tag?->id == $oneTag->id }} && 'dark:bg-coollabs hover:bg-coollabs-100'"
class="w-64 box-without-bg dark:bg-coolgray-100 dark:text-white font-bold" class="w-64 box-without-bg dark:bg-coolgray-100 dark:text-white font-bold"
href="{{ route('tags.show', ['tagName' => $oneTag->name]) }}">{{ $oneTag->name }}</a> href="{{ route('tags.show', ['tagName' => $oneTag->name]) }}">{{ $oneTag->name }}</a>
@empty @empty

View File

@@ -1,10 +1,10 @@
{ {
"coolify": { "coolify": {
"v4": { "v4": {
"version": "4.0.0-beta.360" "version": "4.0.0-beta.362"
}, },
"nightly": { "nightly": {
"version": "4.0.0-beta.362" "version": "4.0.0-beta.363"
}, },
"helper": { "helper": {
"version": "1.0.3" "version": "1.0.3"