81 Commits
Author SHA1 Message Date
Andras BacsaiandClaude Opus 5.5 67673525a8 fix(modal): let password managers autofill the confirmation password
Closes #9963

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:11:07 +01:00
Andras Bacsai 1039368491 fix(s3): support virtual-hosted-style URLs for S3 storages
Add a "Use path-style URLs" setting to S3 storages. It is detected from
the endpoint (Alibaba OSS, Tencent COS, Volcengine/BytePlus TOS), and the
connection test switches to virtual-hosted style when the provider
rejects path-style requests. Backups pass `--path off` to mc.

Closes #10347
2026-10-27 15:53:16 +01:00
Andras BacsaiandClaude Opus 5.5 d3b1a3d405 fix(ui): update breadcrumb names after a rename
Closes #12341

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 14:55:39 +01:00
Andras Bacsai 1a2a5362ad fix(security): secure remote command secrets and clone volume data 2026-10-27 09:47:18 +01:00
Andras Bacsai b5823c777b Merge remote-tracking branch 'origin/main' 2026-10-26 19:30:11 +01:00
Andras BacsaiandClaude Opus 5.5 b17c83d688 fix(modal): keep confirmation checkbox state in one place
The dialog checkboxes used both Alpine selectedActions and wire:model.
After the dialog closed, the two could differ, so a click did not change
the checkbox. Alpine now holds the state, and the dialog sends it to
Livewire on submit.

Closes #12338

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 19:28:36 +01:00
Andras BacsaiandClaude Opus 5.5 0a9019f738 fix(analytics): hide container tooling user agents by default (#12335)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 19:27:22 +01:00
Andras Bacsai 5d66fb719e fix(registration): time-limit first root account creation
Open root registration for ten minutes after startup, then require a Coolify restart to reopen it. Update installer credential handling and explain the setup window in the registration UI.
2026-10-26 10:49:19 +01:00
Andras Bacsai d88b45a0d0 fix(compose): read the Compose file from Git objects (#12320) 2026-10-26 08:49:48 +01:00
Andras BacsaiandClaude Opus 5.5 11f794790d feat(team): let owners and admins require 2FA for team members
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 14:47:39 +01:00
Andras Bacsai 86a11d6992 fix(metrics): show all container metrics in one table 2026-10-24 23:48:36 +02:00
Andras BacsaiandClaude Opus 5.5 b4a4df2706 fix(files): browse containers without a shell through a helper container
Closes #12305

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 23:33:24 +02:00
Andras Bacsai 3b92248309 fix(webhook): match repositories under self-hosted sub-paths 2026-10-24 12:08:35 +02:00
Andras BacsaiandClaude Opus 5.5 33b369243b fix(ui): float listbox panels over modals and scroll containers
Position every listbox panel with position: fixed so overflow containers
such as modal bodies no longer clip it or add a scrollbar. The portal
prop now only teleports the panel to the body.

Closes #11529

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:35:06 +02:00
Andras BacsaiandClaude Opus 5.5 8429b6e94b fix(backup): save removed databases in the databases to back up list
Closes #11548

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:16:37 +02:00
Andras Bacsai 582399c382 feat(ui): add four-color custom theme dialog with presets and share code 2026-10-23 22:07:21 +02:00
Andras BacsaiandClaude Opus 5.5 c410f355e7 fix(ui): declutter domains toolbar with DNS menu and card header
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:28:02 +02:00
Andras Bacsai 30d840f1c6 fix(theme): fall back to default color for invalid stored theme color
Closes #12287
2026-10-23 20:05:08 +02:00
Andras Bacsai 2e7cf8633b feat(logs): pick runtime log streams from service selectors
Replace the container accordion with Deployment and Service selectors
that show one stream, merging replica containers by timestamp. The
viewer fills the page, opens in text view, keeps whitespace, and only
lets grid rows expand when the detail shows more than the row.

Based on the proposal in discussion #12176 by PhilippMolitor.
2026-10-23 11:55:44 +02:00
Andras Bacsai 7acfcdff24 feat(ui): reorganize resource settings and domain port editing 2026-10-22 20:26:41 +02:00
Andras Bacsai 8d400e3d6b fix(ui): refine service resources and settings section styling 2026-10-21 21:01:24 +02:00
22a8c09dd6 Next (#12202)
Co-authored-by: Aditya Tripathi <aditya@climactic.co>
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rosslh <ross@rosshill.ca>
Co-authored-by: Abdulfetah Suudi <suudiabdulfetah@gmail.com>
Co-authored-by: Dharmveer <51308779+dharmveer97@users.noreply.github.com>
Co-authored-by: Maxwell <136101+mxswd@users.noreply.github.com>
2026-10-19 10:07:23 +02:00
e3d4411ff2 chore: merge main into release/v4.5 (#12192)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Furox <177975472+Furox-Art@users.noreply.github.com>
Co-authored-by: johandenhollander <johan.den.hollander@finalist.nl>
Co-authored-by: João Cruz <161638790+SrJooJ@users.noreply.github.com>
Co-authored-by: Saim Hashmi <hashmisaim037@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-18 23:43:20 +02:00
Andras BacsaiandClaude Opus 5.5 7c14c0098e feat(server-transfer): run instance migration as a background job (#12180)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:03:45 +02:00
Aditya TripathiandAndras Bacsai 7e077d9501 feat(metrics): sortable tables and one-click enable on the Metrics page (#12162)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
2026-10-15 15:30:58 +02:00
cf6350e665 feat(analytics): city-level traffic analytics, sortable tables, lighter globe (#12158)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 15:24:06 +02:00
Andras Bacsai fa1895c99a 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
2026-10-14 23:55:28 +02:00
Aditya TripathiandAndras Bacsai fe0b038f3c feat(files): add native file browser for applications, services and databases (#11518)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
2026-10-14 14:32:44 +02:00
Andras Bacsai 33ee09fa87 feat(canvas): add interactive resource views and team avatars (#12160) 2026-10-14 09:28:10 +02:00
Andras Bacsai 83384a7b95 Merge remote-tracking branch 'origin/release/v4.5' into automation/sync-main-to-release-v4.5 2026-10-12 22:30:41 +02:00
Andras Bacsai c54902f776 feat(logs): add text view, group log toolbar into menus, and use skeleton loaders
- Runtime logs: add a compact text view, move display options and log level filters into a View menu, move copy and download into an Export menu, and remove the extra top margin.
- Replace spinner loading cards with skeletons on the logs, dynamic configurations, proxy, TLS certificates, Docker images, environment variables, preview deployments, rollback, subscription, cloud provider, and new resource pages.
2026-10-12 14:55:37 +02:00
🏔️ Peak 863c89a347 feat: show the full file path inline and warn on a repeated base dir (#12081) 2026-10-08 18:14:19 +02:00
github-actions[bot] 73c4dbb00e Merge remote-tracking branch 'origin/main' into release/v4.5 2026-10-08 11:49:14 +00:00
Andras Bacsai f86a02f409 fix(logs): fall back to default level filters when saved filters are invalid
Malformed JSON in the coolify-log-filters localStorage key threw during
runtime log viewer startup. Read the saved value safely and keep only
boolean values for known levels.

Fixes #12101
2026-10-08 13:39:26 +02:00
Andras Bacsai b4ad8fa0f8 Merge remote-tracking branch 'origin/release/v4.5' into automation/sync-main-to-release-v4.5
# Conflicts:
#	config/constants.php
#	tests/Feature/Api/ApplicationSettingsApiTest.php
2026-10-08 08:36:19 +02:00
Andras Bacsai f412e70634 fix(terminal): list lazily loaded containers in the resource terminal picker
The container picker read its options from an Alpine x-data snapshot taken
on the first render, before wire:init loaded the containers. Livewire keeps
the Alpine state when it morphs, so resources with multiple containers
showed an empty picker. Publish the options as a Livewire property and
entangle them in Alpine.

Closes #12110
2026-10-07 17:59:29 +02:00
Andras BacsaiandClaude Opus 5.5 d6a36c068f fix(navbar): remove truncated page search hint from search button
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 17:59:10 +02:00
github-actions[bot] 41a264a2be Merge remote-tracking branch 'origin/main' into next 2026-10-07 11:34:15 +00:00
Andras Bacsai 522ed390ce feat(search): add settings search to the command palette (#12111) 2026-10-07 13:24:21 +02:00
github-actions[bot] 7557cfb7ed Merge remote-tracking branch 'origin/main' into next 2026-10-05 07:45:13 +00:00
Andras Bacsai 774e6bf178 feat(account): add self-service deletion and cancellation flow (#12088) 2026-10-05 09:17:10 +02:00
peaklabs-dev 174e0131f7 feat(proxy): add hashing options for HTTP basic authentication 2026-10-04 19:57:48 +02:00
peaklabs-dev 6f75c601c3 feat(application): show the full file path inline and warn on a repeated base directory 2026-10-03 19:43:34 +02:00
peaklabs-dev 650351e2da fix(application): show the default file location when the field is empty or cleared 2026-10-03 19:43:34 +02:00
Andras Bacsai 7a4709da69 fix(ui): scope env refreshes, block duplicate container names, use a confirm modal
- refreshEnvs is now sent only to the environment variable list, and
  rows no longer listen to it, so adding or removing variables cannot
  queue an update for a removed row ("Snapshot missing"). Locking a row
  refreshes that row directly; the compose editor gets its own event.
- saveCustomName() no longer saves a custom container name that another
  application on the server already uses; it restores the stored value.
- Cancelling a GitHub runner uses the Coolify confirmation modal instead
  of a native browser dialog.
2026-10-01 20:31:00 +02:00
Andras BacsaiandClaude Opus 5.5 e778d99e9d feat(logs): render runtime logs in a virtualized list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 11:09:13 +02:00
Andras BacsaiandClaude Opus 5.5 a79ee909c6 chore: remove unused components and markup-only tests
- Delete Blade components, component classes, Livewire components and
  views that nothing uses after the redesign.
- Delete tests that only compare Blade/CSS source text; keep the source
  checks for authorization gates, stable wire:key values and escaping.
- Update stale tests to the current UI and behaviour.
- Update DESIGN.md to the current navigation and layout.
- Add a lesson: test behaviour, not source markup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 00:18:16 +02:00
Andras BacsaiandClaude Opus 5.5 0d20a14c5c fix(terminal): show an error instead of an endless connecting spinner
When the terminal started automatically, the session timeout started
only after a token arrived. If the server returned no token (container
not running, no shell, access denied, terminal disabled), the spinner
stayed on "connecting…" until the page was reloaded.

- Every early return now sends terminal-session-failed with a short
  message; denied and unknown servers get the same text.
- Auto-start starts the session timeout in init(), so a missing token
  always ends in a visible error with "Reload page".
- With more than one container, auto-start is cancelled, so the
  container picker shows no false timeout error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 20:27:28 +02:00
Andras Bacsai 165d2f3dc8 fix: harden traffic analytics, terminal errors and Postgres restores
Traffic analytics:
- Reject enabling unless the server runs a Coolify-managed Traefik or
  Caddy proxy, and show the reason in the settings UI
- Save the proxy configuration before the setting so a failure leaves
  both unchanged; allow disabling after the proxy was removed
- Skip the proxy restart when the proxy is stopped and report that the
  config applies on next start
- Preserve the user's own Traefik --accesslog* flags and restore them
  when analytics is disabled
- Rotate the Traefik access log in the sidecar with BusyBox tools
  (copytruncate, 5 gzip rotations)
- Create the access log before starting Sentinel, which opens it once

Terminal:
- Detect and surface WebSocket connection rejections in the browser
  terminal, with shared helpers in terminal-connection.js and
  terminal-utils.js

Database import:
- Restore PostgreSQL backups in a single transaction; SQL replace
  restores go into a temporary database and swap in only on success,
  leaving the current database untouched on failure
2026-09-25 22:58:07 +02:00
Andras Bacsai 2fb8c411e9 fix(analytics): keep setup prompt dismissed after refresh
Give the traffic analytics prompt a stable Livewire key and label the server link “Set up on”. Add a browser test for the link and persistent dismissal.
2026-09-24 15:26:08 +02:00