feat(dashboard): add canvas view with active deployment overlay

Add a /dashboard/canvas page that renders every team server with its
resources and their running or queued deployments, backed by a new
ServerCanvasController::dashboard endpoint and a per-server usage
endpoint for zone headers. The dashboard remembers the list/canvas
choice and each section (projects, servers) its own table/grid view.

- Show Deploying/Queued pills on canvas cards and a foldable recent
  deployments panel; add shared CanvasControls component
- Allow backup downloads from the server host via the S3 download
  storage (PrepareFileDownloadJob accepts a null container)
- Extract backup toggle/run actions into ManagesDatabaseBackup and
  surface them in backup execution headers; merge S3 and retention
  sections into the general backup settings
- Move deployments indicator to the top bar and add a main nav
  resource menu with submenus; simplify breadcrumbs and settings
  layouts
- Add shared variables overview canvas and scheduled task modals
- Add feature tests for dashboard canvas, view modes, navbar
  submenus, backup S3 downloads and scheduled task modals
This commit is contained in:
Andras Bacsai
2026-10-14 23:55:28 +02:00
parent ad526a4c32
commit fa1895c99a
134 changed files with 4255 additions and 1594 deletions
+1 -3
View File
@@ -388,9 +388,7 @@ class ContainerFilesystemService
*/
public function buildS3UploadCommand(string $path, bool $isDir, string $url, array $headers): string
{
$headerArgs = collect($headers)
->map(fn (string $value, string $name) => '-H '.escapeshellarg("{$name}: {$value}"))
->implode(' ');
$headerArgs = FileDownloadStorageService::curlHeaderArgs($headers);
$script = 'tmp=$(mktemp /tmp/coolify-download-XXXXXXXXXX) || exit 1; '
.'trap \'rm -f "$tmp"\' EXIT; '
.$this->buildDownloadCommand($path, $isDir).' > "$tmp" && '