Skip to content

Commit da5b003

Browse files
committed
Merge remote-tracking branch 'origin/next' into unreachable-server-backoff
2 parents dd2c9c2 + bb981ed commit da5b003

File tree

262 files changed

+8689
-1487
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

262 files changed

+8689
-1487
lines changed

.github/workflows/pr-quality.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ jobs:
4040
max-emoji-count: 2
4141
max-code-references: 5
4242
require-linked-issue: false
43-
blocked-terms: "STRAWBERRY"
43+
blocked-terms: |
44+
STRAWBERRY
45+
🤖 Generated with Claude Code
46+
Generated with Claude Code
4447
blocked-issue-numbers: 8154
4548

4649
# PR Template Checks
@@ -97,7 +100,7 @@ jobs:
97100
exempt-pr-milestones: ""
98101

99102
# PR Success Actions
100-
success-add-pr-labels: "quality/verified"
103+
success-add-pr-labels: ""
101104

102105
# PR Failure Actions
103106
failure-remove-pr-labels: ""

CHANGELOG.md

Lines changed: 447 additions & 5 deletions
Large diffs are not rendered by default.

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ npm run build # production build
4343
- **Models/** — Eloquent models extending `BaseModel` which provides auto-CUID2 UUID generation. Key models: `Server`, `Application`, `Service`, `Project`, `Environment`, `Team`, plus standalone database models (`StandalonePostgresql`, `StandaloneMysql`, etc.). Common traits: `HasConfiguration`, `HasMetrics`, `HasSafeStringAttribute`, `ClearsGlobalSearchCache`.
4444
- **Services/** — Business logic services (ConfigurationGenerator, DockerImageParser, ContainerStatusAggregator, HetznerService, etc.). Use Services for complex orchestration; use Actions for single-purpose domain operations.
4545
- **Helpers/** — Global helpers loaded via `bootstrap/includeHelpers.php` from `bootstrap/helpers/` — organized into `shared.php`, `constants.php`, `versions.php`, `subscriptions.php`, `domains.php`, `docker.php`, `services.php`, `github.php`, `proxy.php`, `notifications.php`.
46-
- **Data/** — Spatie Laravel Data DTOs (e.g., `CoolifyTaskArgs`, `ServerMetadata`).
46+
- **Data/** — Spatie Laravel Data DTOs (e.g., `ServerMetadata`).
4747
- **Enums/** — PHP enums (TitleCase keys). Key enums: `ProcessStatus`, `Role` (MEMBER/ADMIN/OWNER with rank comparison), `BuildPackTypes`, `ProxyTypes`, `ContainerStatusTypes`.
4848
- **Rules/** — Custom validation rules (`ValidGitRepositoryUrl`, `ValidServerIp`, `ValidHostname`, `DockerImageFormat`, etc.).
4949

app/Actions/CoolifyTask/PrepareCoolifyTask.php

Lines changed: 0 additions & 54 deletions
This file was deleted.

app/Actions/Fortify/CreateNewUser.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,13 @@ public function create(array $input): User
3737
if (User::count() == 0) {
3838
// If this is the first user, make them the root user
3939
// Team is already created in the database/seeders/ProductionSeeder.php
40-
$user = User::create([
40+
$user = (new User)->forceFill([
4141
'id' => 0,
4242
'name' => $input['name'],
4343
'email' => $input['email'],
4444
'password' => Hash::make($input['password']),
4545
]);
46+
$user->save();
4647
$team = $user->teams()->first();
4748

4849
// Disable registration after first user is created

app/Actions/Fortify/ResetUserPassword.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function reset(User $user, array $input): void
2121
'password' => ['required', Password::defaults(), 'confirmed'],
2222
])->validate();
2323

24-
$user->forceFill([
24+
$user->fill([
2525
'password' => Hash::make($input['password']),
2626
])->save();
2727
$user->deleteAllSessions();

app/Actions/Fortify/UpdateUserPassword.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function update(User $user, array $input): void
2424
'current_password.current_password' => __('The provided password does not match your current password.'),
2525
])->validateWithBag('updatePassword');
2626

27-
$user->forceFill([
27+
$user->fill([
2828
'password' => Hash::make($input['password']),
2929
])->save();
3030
}

app/Actions/Fortify/UpdateUserProfileInformation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function update(User $user, array $input): void
3535
) {
3636
$this->updateVerifiedUser($user, $input);
3737
} else {
38-
$user->forceFill([
38+
$user->fill([
3939
'name' => $input['name'],
4040
'email' => $input['email'],
4141
])->save();
@@ -49,7 +49,7 @@ public function update(User $user, array $input): void
4949
*/
5050
protected function updateVerifiedUser(User $user, array $input): void
5151
{
52-
$user->forceFill([
52+
$user->fill([
5353
'name' => $input['name'],
5454
'email' => $input['email'],
5555
'email_verified_at' => null,

app/Actions/Server/ValidateServer.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public function handle(Server $server)
3030
]);
3131
['uptime' => $this->uptime, 'error' => $error] = $server->validateConnection();
3232
if (! $this->uptime) {
33-
$this->error = 'Server is not reachable. Please validate your configuration and connection.<br>Check this <a target="_blank" class="text-black underline dark:text-white" href="https://coolify.io/docs/knowledge-base/server/openssh">documentation</a> for further help. <br><br><div class="text-error">Error: '.$error.'</div>';
33+
$sanitizedError = htmlspecialchars($error ?? '', ENT_QUOTES, 'UTF-8');
34+
$this->error = 'Server is not reachable. Please validate your configuration and connection.<br>Check this <a target="_blank" class="text-black underline dark:text-white" href="https://coolify.io/docs/knowledge-base/server/openssh">documentation</a> for further help. <br><br><div class="text-error">Error: '.$sanitizedError.'</div>';
3435
$server->update([
3536
'validation_logs' => $this->error,
3637
]);

app/Actions/Service/DeleteService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public function handle(Service $service, bool $deleteVolumes, bool $deleteConnec
3333
}
3434
}
3535
foreach ($storagesToDelete as $storage) {
36-
$commands[] = "docker volume rm -f $storage->name";
36+
$commands[] = 'docker volume rm -f '.escapeshellarg($storage->name);
3737
}
3838

3939
// Execute volume deletion first, this must be done first otherwise volumes will not be deleted.

0 commit comments

Comments
 (0)