@@ -4,7 +4,7 @@ namespace App\Livewire\Project\Application;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use App\Actions\Application\StopApplication;
 | 
					use App\Actions\Application\StopApplication;
 | 
				
			||||||
use App\Events\ApplicationStatusChanged;
 | 
					use App\Events\ApplicationStatusChanged;
 | 
				
			||||||
use App\Jobs\ContainerStatusJob;
 | 
					    use App\Jobs\ContainerStatusJob;
 | 
				
			||||||
use App\Jobs\ServerStatusJob;
 | 
					use App\Jobs\ServerStatusJob;
 | 
				
			||||||
use App\Models\Application;
 | 
					use App\Models\Application;
 | 
				
			||||||
use Livewire\Component;
 | 
					use Livewire\Component;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ return [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // The release version of your application
 | 
					    // The release version of your application
 | 
				
			||||||
    // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | 
					    // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | 
				
			||||||
    'release' => '4.0.0-beta.275',
 | 
					    'release' => '4.0.0-beta.276',
 | 
				
			||||||
    // When left empty or `null` the Laravel environment will be used
 | 
					    // When left empty or `null` the Laravel environment will be used
 | 
				
			||||||
    'environment' => config('app.env'),
 | 
					    'environment' => config('app.env'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,3 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
return '4.0.0-beta.275';
 | 
					return '4.0.0-beta.276';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
    <livewire:project.shared.configuration-checker :resource="$application" />
 | 
					    <livewire:project.shared.configuration-checker :resource="$application" />
 | 
				
			||||||
    <livewire:project.application.heading :application="$application" />
 | 
					    <livewire:project.application.heading :application="$application" />
 | 
				
			||||||
    <div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }" class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
					    <div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }" class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
				
			||||||
        <div class="flex gap-4 overflow-x-scroll sm:gap-2 sm:flex-col sm:overflow-x-hidden scrollbar whitespace-nowrap">
 | 
					        <div class="flex flex-col items-start gap-2 min-w-fit">
 | 
				
			||||||
            <a class="menu-item" :class="activeTab === 'general' && 'menu-item-active'"
 | 
					            <a class="menu-item" :class="activeTab === 'general' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'general'; window.location.hash = 'general'" href="#">General</a>
 | 
					                @click.prevent="activeTab = 'general'; window.location.hash = 'general'" href="#">General</a>
 | 
				
			||||||
            @if ($application->destination->server->isSwarm())
 | 
					            @if ($application->destination->server->isSwarm())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
    <livewire:project.shared.configuration-checker :resource="$database" />
 | 
					    <livewire:project.shared.configuration-checker :resource="$database" />
 | 
				
			||||||
    <livewire:project.database.heading :database="$database" />
 | 
					    <livewire:project.database.heading :database="$database" />
 | 
				
			||||||
    <div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }" class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
					    <div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }" class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
				
			||||||
        <div class="flex gap-4 overflow-x-scroll sm:gap-2 sm:flex-col sm:overflow-x-hidden scrollbar whitespace-nowrap">
 | 
					        <div class="flex flex-col items-start gap-2 min-w-fit">
 | 
				
			||||||
            <a class="menu-item" :class="activeTab === 'general' && 'menu-item-active'"
 | 
					            <a class="menu-item" :class="activeTab === 'general' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'general';
 | 
					                @click.prevent="activeTab = 'general';
 | 
				
			||||||
                window.location.hash = 'general'"
 | 
					                window.location.hash = 'general'"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,15 +8,14 @@
 | 
				
			|||||||
    <div class="subtitle">All your projects are here.</div>
 | 
					    <div class="subtitle">All your projects are here.</div>
 | 
				
			||||||
    <div class="grid gap-2 lg:grid-cols-2">
 | 
					    <div class="grid gap-2 lg:grid-cols-2">
 | 
				
			||||||
        @forelse ($projects as $project)
 | 
					        @forelse ($projects as $project)
 | 
				
			||||||
            <div class="box group" x-data
 | 
					            <div class="box group" x-data x-on:click="goto('{{ $project->uuid }}')">
 | 
				
			||||||
                x-on:click="goto('{{ $project->uuid }}')">
 | 
					 | 
				
			||||||
                <a class="flex flex-col justify-center flex-1 mx-6"
 | 
					                <a class="flex flex-col justify-center flex-1 mx-6"
 | 
				
			||||||
                    href="{{ route('project.show', ['project_uuid' => data_get($project, 'uuid')]) }}">
 | 
					                    href="{{ route('project.show', ['project_uuid' => data_get($project, 'uuid')]) }}">
 | 
				
			||||||
                    <div class="box-title">{{ $project->name }}</div>
 | 
					                    <div class="box-title">{{ $project->name }}</div>
 | 
				
			||||||
                    <div class="box-description ">
 | 
					                    <div class="box-description ">
 | 
				
			||||||
                        {{ $project->description }}</div>
 | 
					                        {{ $project->description }}</div>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
                <div class="flex items-center text-xs">
 | 
					                <div class="flex items-center justify-center gap-2 pt-4 pb-2 mr-4 text-xs lg:py-0 lg:justify-normal">
 | 
				
			||||||
                    <a class="mx-4 font-bold hover:underline"
 | 
					                    <a class="mx-4 font-bold hover:underline"
 | 
				
			||||||
                        href="{{ route('project.edit', ['project_uuid' => data_get($project, 'uuid')]) }}">
 | 
					                        href="{{ route('project.edit', ['project_uuid' => data_get($project, 'uuid')]) }}">
 | 
				
			||||||
                        Settings
 | 
					                        Settings
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,38 +2,39 @@
 | 
				
			|||||||
    <livewire:project.service.navbar :service="$service" :parameters="$parameters" :query="$query" />
 | 
					    <livewire:project.service.navbar :service="$service" :parameters="$parameters" :query="$query" />
 | 
				
			||||||
    <div class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
					    <div class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
				
			||||||
        <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 sm:min-w-fit" target="_blank" href="{{ $service->documentation() }}">Documentation <x-external-link /></a>
 | 
					            <a class="menu-item sm:min-w-fit" target="_blank" href="{{ $service->documentation() }}">Documentation
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					                <x-external-link /></a>
 | 
				
			||||||
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'service-stack' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'service-stack';
 | 
					                @click.prevent="activeTab = 'service-stack';
 | 
				
			||||||
                window.location.hash = 'service-stack'"
 | 
					                window.location.hash = 'service-stack'"
 | 
				
			||||||
                href="#">Service Stack</a>
 | 
					                href="#">Service Stack</a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'environment-variables' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'environment-variables'; window.location.hash = 'environment-variables'"
 | 
					                @click.prevent="activeTab = 'environment-variables'; window.location.hash = 'environment-variables'"
 | 
				
			||||||
                href="#">Environment
 | 
					                href="#">Environment
 | 
				
			||||||
                Variables</a>
 | 
					                Variables</a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'storages' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'storages';
 | 
					                @click.prevent="activeTab = 'storages';
 | 
				
			||||||
                window.location.hash = 'storages'"
 | 
					                window.location.hash = 'storages'"
 | 
				
			||||||
                href="#">Storages</a>
 | 
					                href="#">Storages</a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'execute-command' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'execute-command';
 | 
					                @click.prevent="activeTab = 'execute-command';
 | 
				
			||||||
                window.location.hash = 'execute-command'"
 | 
					                window.location.hash = 'execute-command'"
 | 
				
			||||||
                href="#">Execute Command</a>
 | 
					                href="#">Execute Command</a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'logs' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'logs';
 | 
					                @click.prevent="activeTab = 'logs';
 | 
				
			||||||
                window.location.hash = 'logs'"
 | 
					                window.location.hash = 'logs'"
 | 
				
			||||||
                href="#">Logs</a>
 | 
					                href="#">Logs</a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'webhooks' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'webhooks'; window.location.hash = 'webhooks'" href="#">Webhooks
 | 
					                @click.prevent="activeTab = 'webhooks'; window.location.hash = 'webhooks'" href="#">Webhooks
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'resource-operations' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'resource-operations'; window.location.hash = 'resource-operations'"
 | 
					                @click.prevent="activeTab = 'resource-operations'; window.location.hash = 'resource-operations'"
 | 
				
			||||||
                href="#">Resource Operations
 | 
					                href="#">Resource Operations
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'tags' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'tags'; window.location.hash = 'tags'" href="#">Tags
 | 
					                @click.prevent="activeTab = 'tags'; window.location.hash = 'tags'" href="#">Tags
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <a class="menu-item sm:min-w-fit"
 | 
					            <a class="menu-item sm:min-w-fit" :class="activeTab === 'danger' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'danger';
 | 
					                @click.prevent="activeTab = 'danger';
 | 
				
			||||||
                window.location.hash = 'danger'"
 | 
					                window.location.hash = 'danger'"
 | 
				
			||||||
                href="#">Danger Zone
 | 
					                href="#">Danger Zone
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,26 +1,27 @@
 | 
				
			|||||||
<div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }">
 | 
					<div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }">
 | 
				
			||||||
    <livewire:project.service.navbar :service="$service" :parameters="$parameters" :query="$query" />
 | 
					    <livewire:project.service.navbar :service="$service" :parameters="$parameters" :query="$query" />
 | 
				
			||||||
    <div class="flex h-full pt-6 sm:flex-row flex-col gap-8">
 | 
					    <div class="flex flex-col h-full gap-8 pt-6 sm:flex-row">
 | 
				
			||||||
        <div class="flex sm:flex-col gap-2 xl:w-48 overflow-x-scroll">
 | 
					        <div class="flex flex-col items-start gap-2 min-w-fit">
 | 
				
			||||||
            <a class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-active' : '' }}"
 | 
					            <a class="menu-item"
 | 
				
			||||||
 | 
					                class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-active' : '' }}"
 | 
				
			||||||
                href="{{ route('project.service.configuration', [...$parameters, 'stack_service_uuid' => null]) }}">
 | 
					                href="{{ route('project.service.configuration', [...$parameters, 'stack_service_uuid' => null]) }}">
 | 
				
			||||||
                <button><- Back</button>
 | 
					                <button><- Back</button>
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <a :class="activeTab === 'general' && 'menu-item-active'"
 | 
					            <a class="menu-item" :class="activeTab === 'general' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'general'; window.location.hash = 'general'; if(window.location.search) window.location.search = ''"
 | 
					                @click.prevent="activeTab = 'general'; window.location.hash = 'general'; if(window.location.search) window.location.search = ''"
 | 
				
			||||||
                href="#">General</a>
 | 
					                href="#">General</a>
 | 
				
			||||||
            <a :class="activeTab === 'storages' && 'menu-item-active'"
 | 
					            <a class="menu-item" :class="activeTab === 'storages' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'storages'; window.location.hash = 'storages'; if(window.location.search) window.location.search = ''"
 | 
					                @click.prevent="activeTab = 'storages'; window.location.hash = 'storages'; if(window.location.search) window.location.search = ''"
 | 
				
			||||||
                href="#">Storages
 | 
					                href="#">Storages
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <a :class="activeTab === 'scheduled-tasks' && 'menu-item-active'"
 | 
					            <a class="menu-item" :class="activeTab === 'scheduled-tasks' && 'menu-item-active'"
 | 
				
			||||||
                @click.prevent="activeTab = 'scheduled-tasks'; window.location.hash = 'scheduled-tasks'"
 | 
					                @click.prevent="activeTab = 'scheduled-tasks'; window.location.hash = 'scheduled-tasks'"
 | 
				
			||||||
                href="#">Scheduled Tasks
 | 
					                href="#">Scheduled Tasks
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            @if (str($serviceDatabase?->databaseType())->contains('mysql') ||
 | 
					            @if (str($serviceDatabase?->databaseType())->contains('mysql') ||
 | 
				
			||||||
                    str($serviceDatabase?->databaseType())->contains('postgres') ||
 | 
					                    str($serviceDatabase?->databaseType())->contains('postgres') ||
 | 
				
			||||||
                    str($serviceDatabase?->databaseType())->contains('mariadb'))
 | 
					                    str($serviceDatabase?->databaseType())->contains('mariadb'))
 | 
				
			||||||
                <a :class="activeTab === 'backups' && 'menu-item-active'"
 | 
					                <a :class="activeTab === 'backups' && 'menu-item-active'" class="menu-item"
 | 
				
			||||||
                    @click.prevent="activeTab = 'backups'; window.location.hash = 'backups'" href="#">Backups</a>
 | 
					                    @click.prevent="activeTab = 'backups'; window.location.hash = 'backups'" href="#">Backups</a>
 | 
				
			||||||
            @endif
 | 
					            @endif
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
                    <div class="description">
 | 
					                    <div class="description">
 | 
				
			||||||
                        {{ $environment->description }}</div>
 | 
					                        {{ $environment->description }}</div>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
                <div class="flex items-center text-xs">
 | 
					                <div class="flex items-center justify-center gap-2 pt-4 pb-2 mr-4 text-xs lg:py-0 lg:justify-normal">
 | 
				
			||||||
                    <a class="mx-4 font-bold hover:underline"
 | 
					                    <a class="mx-4 font-bold hover:underline"
 | 
				
			||||||
                        href="{{ route('project.environment.edit', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => $environment->name]) }}">
 | 
					                        href="{{ route('project.environment.edit', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => $environment->name]) }}">
 | 
				
			||||||
                        Settings
 | 
					                        Settings
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "coolify": {
 | 
					    "coolify": {
 | 
				
			||||||
        "v4": {
 | 
					        "v4": {
 | 
				
			||||||
            "version": "4.0.0-beta.275"
 | 
					            "version": "4.0.0-beta.276"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user