Commit Graph
17913 Commits
Author SHA1 Message Date
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 0a567cb8e7 feat(backups): refresh backup views live on team channel events
- Refresh application, database and volume backup lists on BackupCreated
- Refresh backup execution, edit and service resource views on
  ServiceStatusChanged as well as ServiceChecked
- Hide the deployments counter when only the current page's application
  is deploying, since its heading already shows "Deploying…"
- Show storage section shortcuts in the service configuration sidebar
- Drive server sidebar Sentinel/Security active state from activeMenu
  and activeSubMenu instead of route matching
- Start the app sidebar expanded for new users
- Drop a column from the backup executions table grid and adjust the
  responsive breakpoints
- Update the related feature tests
2026-10-15 14:10:14 +02:00
Andras Bacsai d9890500ed fix(canvas): keep dragged groups in place after save and reload
Hold saved card and group positions on the canvas until a load that
started after the save completes, so stale poll or refresh responses
no longer snap cards back to their old spots.

Use GROUP_GAP instead of BOX_GAP when dragging groups and checking
group spacing in dragRules, matching layoutServerView so a reload
does not shift a dropped group. Save before ending the group drag.

Add tests covering group spacing after drag and reload.
2026-10-15 13:29:28 +02:00
Andras Bacsai 4f32548e09 feat(tags): connect resources to a tag from the tag page
Add a "Connect to resources" modal to the tag show page for small
screens, where the tags canvas is hidden. A new toggleResource action
attaches or detaches the tag on a team resource after an authorization
check, then refreshes the tag's applications and services.

Also improve responsive layouts:
- Wrap section headings, project/environment toolbars and view toggles
  on narrow screens; keep modal headers from shrinking.
- Move the environment settings link to an icon next to the environment
  name and link the project name back to its environments.
- Group project icon, name and description into one "Project details"
  form with an unsaved-changes bar.
- Show dashboard "view all" links for projects and servers only when
  there are more items than the dashboard limit.
2026-10-15 13:19:18 +02:00
Andras Bacsai 88e710058e refactor(settings): list Authentication before Email and Backup in menus
Reorder the Instance settings links in the navbar and the settings
layout sidebar so Authentication comes first, then Email, then Backup.
The navbar section divider moves to Authentication, since it is now the
first item in the group.
2026-10-15 09:13:57 +02:00
Andras Bacsai c246b09075 fix(team): teleport member manage menu to body to avoid clipping
Render the member "Manage" dropdown via x-teleport and anchor it to the
trigger button with x-anchor so it is no longer clipped by overflow
containers. Outside clicks on the trigger are ignored to prevent
immediate re-toggling.

Also hide the dashboard activity column unless it contains a section.
2026-10-15 08:50:08 +02:00
Andras Bacsai fdd69977a4 feat(canvas): show empty environments as placeholder cards
Environments without resources now appear as placeholder cards on the
project, team projects and server canvases. They sit in the zone that
holds most of their project's cards, or in a new "Empty environments"
zone when there is none. A new EmptyCard component renders them.

- Project canvas: admins can move groups and cards, and the moves are
  saved on their environment canvas. Environments are ordered by id.
- Server canvas: admins can move single cards as well as groups.
- Shared variable canvas: built-in COOLIFY_SERVER_UUID/NAME variables
  and their links are hidden on server scope.
- Main nav: resource menus register through registerMainNavContext()
  with depth levels (#main-nav-context-{depth}). Back goes one level
  lower, and Back at depth 0 returns to the main menu.
- The deploy canvas state, styles and controls are simplified, and the
  related sidebar, navbar and dashboard views are updated.

Tests are added or updated for the canvases and the main nav resource
menus.
2026-10-15 08:46:44 +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
Andras Bacsai ad526a4c32 fix(dev): restore s6 user bundle in user-bundles.d
The MCP merge (#12163) moved the bundle back to s6-rc.d, which overrides
the serversideup v5 bundle and stops php-fpm and nginx from starting.
2026-10-14 14:57:12 +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
github-actions[bot] 70f7744660 Merge remote-tracking branch 'origin/main' into release/v4.5 2026-10-14 12:29:51 +00:00
Andras Bacsai 23a22e7970 fix(sources): restrict system-wide Git sources to instance admins (#12164) 2026-10-14 14:07:54 +02:00
Andras Bacsai 521b3cb90f feat(mcp): add REST-backed resource management tools (#12163) 2026-10-14 13:26:12 +02:00
Andras Bacsai b31a458a51 style(ui): align floating navigation and canvas radii to 8px 2026-10-14 11:29:35 +02:00
Andras Bacsai e95df9f135 Merge remote-tracking branch 'origin/release/v4.5' into release/v4.5 2026-10-14 10:29:00 +02:00
Andras Bacsai 5eeae40041 chore(docker): upgrade serversideup PHP images to v5.0.0
Move s6 user bundles to user-bundles.d and update packaging assertions.
Preserve production OPcache timestamp validation and smaller memory limits.
2026-10-14 10:28:53 +02:00
github-actions[bot] cc6378177c Merge remote-tracking branch 'origin/main' into release/v4.5 2026-10-14 08:27:56 +00:00
Andras Bacsai d080bf35e6 refactor(policies): remove unused authorization methods (#12165) 2026-10-14 10:18:05 +02:00
github-actions[bot] 599eecca69 Merge remote-tracking branch 'origin/main' into release/v4.5 2026-10-14 07:45:50 +00:00
Andras Bacsai d196dd322f fix(deploy): keep start-time buildpack vars in runtime env (#12025) 2026-10-14 09:43:55 +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 448dc8ea0a feat(logging): strengthen secret redaction and add admin controls (#12151) 2026-10-13 20:43:19 +02:00
Andras Bacsai 9302395063 feat(metrics): fleet-wide Metrics page + per-server disk/network/load charts (#11867) 2026-10-13 11:58:34 +02:00
Andras Bacsai f63726279c Merge remote-tracking branch 'origin/release/v4.5' into sentinel-metrics-sidebar-page 2026-10-13 11:57:47 +02:00
Andras Bacsai d77580cb35 fix(metrics): fetch fleet data concurrently and refresh server access
Run metric requests in batches of eight workers, isolate endpoint failures,
and preserve CPU and memory history when Sentinel lacks a summary endpoint.
Repair Sentinel tokens before creating workers and bound SSH fetch timeouts.

Reauthorize team servers on refresh and hydration, clear stale metrics after
transfers or deletions, and resolve container metadata for team ID zero.

Use only root filesystem samples when mount fields are present, while
supporting legacy disk data. Add regression coverage for concurrent workers,
access changes, endpoint failures, and disk mapping.
2026-10-13 11:56:39 +02:00
Andras Bacsai f37761253d feat(server): set up Cloudflare tunnels with API tokens (#12157) 2026-10-13 11:32:26 +02:00
Andras Bacsai c35d3d5c8c fix(hostinger): use a searchable listbox for extra SSH keys 2026-10-13 11:25:33 +02:00
Andras Bacsai 8dfad2c16c fix(dev): define the s6 user bundle in user-bundles.d (#12155) 2026-10-13 11:19:26 +02:00
Aditya Tripathi 5e39010543 fix(dev): define the s6 user bundle in user-bundles.d
The serversideup/php base image now defines its user bundle (nginx,
php-fpm) in /etc/s6-overlay/user-bundles.d. A bundle in s6-rc.d/user
has priority over it, so the dev container started without nginx and
php-fpm and did not become healthy.
2026-10-13 08:27:33 +00:00
Andras Bacsai 4f92d3c094 feat(auth): add passkey sign-in (#12154) 2026-10-13 10:10:03 +02:00
Andras Bacsai 2fa4d06ed6 fix(auth): allow restricted accounts to confirm passwords for passkeys 2026-10-13 10:09:48 +02:00
github-actions[bot] 8f5bb11bee Merge remote-tracking branch 'origin/main' into release/v4.5 2026-10-13 08:04:48 +00:00
Andras Bacsai dc6777a71d feat(server): paginate Docker images with adjustable page size
Reset pagination when search or page size changes and clamp page bounds.
Move disk usage badges beside the Images heading.
2026-10-13 10:02:19 +02:00
Aditya Tripathi 12ffea0ab2 refactor(auth): merge the passkey migrations into one 2026-10-13 06:54:26 +00:00
Aditya Tripathi 7bed78c81e feat(auth): add passkey sign-in
Enable Fortify passkeys (laravel/passkeys) with the @laravel/passkeys
client. Users can sign in with a passkey, confirm sensitive actions with
one, and add, rename, and delete passkeys on the Profile page.

- Resolve the relying party for each request from the instance URL, then
  APP_URL, then localhost. Passkey routes return 404 on other hosts.
- Add the is_passkey_enabled instance setting (Settings > Advanced).
- Use a hex user handle (laravel/passkeys-server#41).
- Rate limit the passkey routes by client IP.
- Record audit events for registered, verified, and deleted passkeys.
2026-10-13 04:01:40 +00:00
Andras Bacsai a81eb2d4d2 chore: merge main into release/v4.5 (#12153) 2026-10-12 22:40:54 +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 11ece25149 chore: merge main into release/v4.5 (#12140) 2026-10-12 21:40:08 +02:00
Andras Bacsai 200af07225 Merge remote-tracking branch 'origin/release/v4.5' into automation/sync-main-to-release-v4.5 2026-10-12 21:38:45 +02:00
Andras BacsaiandClaude Opus 5.5 3863f0d257 fix(proxy): link Traefik update docs in patch update callout
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:11:05 +02:00
Andras Bacsai c30e47dc12 fix(ui): show Redeploy label for running applications 2026-10-12 21:11:05 +02:00
Andras Bacsai da426914ca Revert "fix(ui): prevent layout shifts with a stable scrollbar gutter"
This reverts commit 5756a4cda4.
2026-10-12 15:14:30 +02:00
Andras Bacsai 5756a4cda4 fix(ui): prevent layout shifts with a stable scrollbar gutter
Skip terminal scroll-lock padding when the browser reserves scrollbar space.
2026-10-12 15:07:09 +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
Andras Bacsai 7837a07ba2 fix(notifications): disable channels after repeated configuration failures
Count invalid keys, tokens, and deleted webhooks in a new failure_count column
on each notification settings table, like servers.unreachable_count. After 3
failures in a row the channel is disabled and the team is told by instance
email and its other channels. Rate limits and server errors are retried and
not counted; test notifications never count.
2026-10-12 14:37:58 +02:00
Andras Bacsai 12b35957eb feat(ui): add yaml syntax highlighting to dynamic proxy configs and file mounts 2026-10-12 14:31:37 +02:00
Andras BacsaiandClaude Opus 5.5 b13ecb0542 chore(seeding): seed railpack examples from new repo layout
Move all git examples into ApplicationSeeder on railpack, using the
reorganized coollabsio/coolify-examples main branch, and drop the
separate Railpack Examples project. Add DEV_SEED_IP to set the IP for
seeded sslip.io domains (e.g. a Tailscale IP).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:26:19 +02:00
Andras Bacsai a7e1cecfa7 fix(ui): remove "View log" text from deploying indicator 2026-10-12 14:26:09 +02:00
Andras BacsaiandClaude Opus 5.5 213a61b7ab fix(env): pass exact env values to containers, keep old escaping for existing variables (#12024)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:06:45 +02:00